Skip to main content

Full text of "OS/2 Technical Update ' 94 Conference Proceedings"

See other formats


Georgia World Congress Center 
Atlanta, Georgia 
September 11-14, 1994 












CONFERENCE PROCEEDINGS 


© IBM Corp. 1994 

International Business Machines Corporation 

Printed in the United States of America. All rights reserved 


Georgia World Congress Center 
Atlanta, Georgia 
September 11-14,1994 



IBM, OS/2 and other IBM products are trademarks or registered trademarks 
of International Business Machines Corporation. Other product names are 
trademarks or registered trademarks of their respective companies 









OS/2 TECHNICAL UPDATE ‘94 TABLE OF CONTENTS 


AD—APPLICATION DEVELOPMENT 

AD01 User Centric OS/2 Application Design 
ADG2 Designing OS/2 Applications 
ADO3 OS/2 The Platform for Quality Software 
Development 

AD04 How to Create Endian Neutral Software for 
Portability 

AD05 32-Bit Native Porting Tools and Techniques 
A DO 6 The Hang/Trap Enigma 

AD07 Adding Help to Your OS/2 Applications 
ADO8 OS/2 and Internationalization of Applications 
AD09 The Integrated Desktop — Programming to the 
Workplace Shell 

AD 10 Understanding and Exploiting OS/2 Graphical 
Programming Interface 

ADI 1 The Developer Connection for OS/2 
AD12 OS/2 Debug Kernel “Hands-On-Lab” 

ADI3 * The Developer Connection for LAN Systems 

CC —C++ OBJECT PROGRAMMING 

CC01 IBM C Set ++ overview 

CC02 IBM C Set ++ Debugging Tips and Techniques 

CC03 IBM C Set ++ Class Libraries 

CC04 IBM C Set ++ WorkFrame/2 

CC05 IBM C Set++ Optimization Tips and Techniques 

CC06 Performance Tuning with Extra for C Set++ 

CM —COMMUNICATIONS MANAGEMENT 

CM01 Communications Manager/2: The Poser of Personal 
Networking 

CM02 Communications Manager/2: Installation and 
Configuration Basics 

CM03 Communications Manager/2: Complex 
Configuration 

CM04 Communications Manager/2: Building SNA 
Applications 

CM05 Avoiding Common Problems and Problem 
Determination 

CM06 Multiprotocol Transport Network and AnyNet 
CM07 Problem Diagnosis Using Communication 
Manager/2 APPC Trace 

CS — CLIENT SERVER 

CLIENT/SERVER SOLUTIONS: 

CS01 Client/Server Survival Guide with OS/2 
CS02 SNA Client/Server in Communications 
Environments 

CS03 Using NS/DOS in a Client/Server Environment 
CS04 CICS OS/2:32-bit Client/Server Computing 

CLIENT/SERVER FOR APPC/APPN 

CS05 Introduction to APPC and APPN 

CS06 What’s New in APPC and APPN 

CS07 APPN and TCP/IP: A Comparison of Protocols 


CS08 Programming CPI-C Applications with 
Communication Manager/2 
CS09 Selection an API for Your Application and 
Environment 

CS10 Using APPC: Basic Features and Design 
Considerations 

CS11 Using APPC: Performance and Security Features 
CS12 APPC Security for Application Programmers 
CS 13 Configuring APPC/APPN on the Workstation 

CS14 Improving APPC Configuration 
CS15 Using the New APPC Utilides 
CS16 Migrating Applications from HLLAPI to APPC 

CLIENT/SERVER FOR DCE: 

CS19 Introduction to Distributed Computing Environment 
(DCE) 

CS20 Introduction to DCE Programming 
CS21 DCE Programming “Hands-On-Lab” 

CS22 Introduction to DCE Administration 
CS23 Choosing DCE as Your Client/Server Progr amm ing 
Environment 

CS24 DCE for OS/2 Base Performance 
CS25 DCE for OS/2 Distributed Application Performance 
“Hands-On-Lab” 

CS26 Open Distributed Systems with Messaging and Queuing 
CS27 Network Security and Single Sign-On 

CLIENT/SERVER for TCP/IP: 

CS29 Sockets Programming with IBM TCP/IP for OS/2 
CS30 Open Network Computing Remote Procedure Call 
Programming 

CS31 Sockets Programming with IBM TCP/IP for OS/2 
Continuation of CS29 

DB — DATABASE 

DB01 DB2/2: Let’s Get Small 

DB02 DB2/2: Family and Friends 

DB03 Data Access Services 

DM — DISTRIBUTED SYSTEMS 
MANAGEMENT 

DM01 NetView for OS/2: Fact or Fiction 
DM02 IBM LAN NetView Management Utilities for OS/2 
DM03 Enabling Your Application for Remote 
Unattended Installation 

DM04 NetView Distribution Manager/2 (NetView DM/2) 
Basic 

DM05 NetView Distribution Manager/2 (NetView DM/2) 
Advanced 

GP — GROUP PRODUCTIVITY 

GP01 IBM’S Person-to-Person Conferencing: Because You 
Can’t Be Everywhere 

GP02 IBM Server for Workgroups: Overview and 
Common Install 

GP03 * Lotus OS/2 Development Directions 
GP04 * Lotus SmartSuite for OS/2 


* Handout not available at time of printing. 



OS/2 TECHNICAL UPDATE ‘94 TABLE OF CONTENTS 


IT — IMAGE TECHNOLOGY 

IT01 ImagePlus/2 Overview 

IT02 ImagePlus/2 Tips, Techniques, Trends and 

Directions 


LS — LAN SYSTEM SOLUTIONS 

LS01 LAN Server Overview 

LS02 LAN Server Directions 

LS03 LAN Server Tips and Techniques I 

LS04 Continuation ofLS03 
LS05 LAN Server Security 

LS06 LAN Server Performance Tuning 

LS07 LAN Distance: Remote LAN Success 

LS08 LAN Server Interoperablilty 

LS09 LAN Automated Distribution/2 

LS10 LAN Server Administration “Hands-On-Lab” 

LSI 1 LAN Server Connecting to Resources 

“Hands-Oii-Lab” 

LS12 NetWare Server for OS/2 

LS 13 NetWare Interoperablilty 

LS14 IBM LAN Systems Communications Transports 

LS15 IBM’S ADSTAR Distributed Storage Manager/2 

LS 16 LAN Network Manager 


MM — MULTIMEDIA AND PEN 
COMPUTING 

MM01 OS/2 Multimedia Support 

MM02 OS/2 Multimedia Applications and Architecture 

MM03 OS/2 Software Motion Video 

MM04 Multimedia Creation and Management 

MM05 * LAN Server Ultimedia 

MM06 Pen for OS/2, PenDOS and Speech 


OO — OBJECT-ORIENTED TECHNOLOGY 
OOOl IBM Object Strategy and Plans 
0002 * The In-Taligent Use of Objects 

0003 How to Introduce Objects to Your Organization 
0004 OpenDoc for OS/2: Compound Document 
Architecture 

0005 * Visual Developer Tool 

0006 Visual Age 

0007 Introduction to the SOMbjects Toolkit 
0008 * Persistence Object Services for SOM 

0009 SOM Metaclass Programming 
0010 APPC and Object-Oriented Programming 
OOll * Storing Objects in DB/2: The Ultimate Object Data 
Store 

0012 How to Write SOMobjects in C++ and the Solutions 
Offerd by SOM 


OS — OS/2 

OS/2: THE SYSTEM: 

OSOl OS/2 Trends and Directions 

OS02 OS/2 and Windows 

OS03 Eye on OS/2 
OS04 Platform Wars 

OS05 OS/2 Windows Support, Inside and Out 

OS06 OS/2 Performance Enhancements 

OSOl OS/2 REXX Tutorial 

OS08 OS/2 Symmetric Multiprocessing 

OS09 OS/2 Hints, Tricks and Tuning 

OS 11 Using and Customizing the Workplace Shell 

OS/2 FOR THE POWERPC: 

OS 12 Introduction to OS/2 for the PowerPC 

OS 13 What is the OS/2 Personality 

OS 14 Tools and Development Environment for the 

PowerPC 

OS 15 Humancentries and How They Fit with the 

PowerPC 


PC — PC DOS 

PC01 “Alive and Well” What’s New in PC DOS 6.3 
PC02 PC DOS “Under the Hood” 


TS — TECHNICAL SUPPORT 

TSOI IBM Personal Systems Service and Support 
TS02 * Navigating OS/2 Support 
TS04 Technical Coordinator Program 
TS06 IBM Product Certification Programs 
TS07 Professional Certification Program from 
IBM...for people! 

TS08 Certification Testing 

TS 10 * IBM’s Worldwide Electronic Resources 

TS 11 Group Discussion 

TS 12 Group Discussion 

TS 13 * Using OS/2 to Reach the Internet 

TS 14 * The Technical Connection 


* Handout not available at time of printing. 




AD01 


Goals 


David Moskowtiz 
Productivity Solutions, Snc. 


User centric application design for OS/2 2.1 


» Understand the technology 
► Develop an OS/2 mindset 

* Understand the issues and requirement to 
create OS/2 applications that are extraordinarily 
responsive to the end user. 


Protected mode 

► Programs isolated 

- From each other 

- From hardware 

► Cannot make assumptions about access or 
sharing 


initial thoughts 

► What does isolation mean? 

► What shortcuts don't work? 

► What assumptions aren't valid? 

► Think virtual computer 


Copyright (c) 1993-1994, David Moskowitz. All right reserved. 




User Centric OS/2 Application Design 


Memory management 

► Paged virtual memory 

► System integrity assured 

► Code pages read only 

► Data pages read/write 

► Allocate different from commit 

► Shared memory mapping 

► Sub-aiiocatlon 


Memory concepts 

► How can i exploit flat model? 

► How can S keep it efficient? 

* What is the impact of a 4K page? 

► Think memory objects and granularity 

► Think about working set and its impact 
performance 


Multi-tasking 

► Processes 

► Threads 

► Scheduling & priority levels 


Process 

► Unit of resource ownership 

► Contains one or more threads 

► Child processes 

► Execute serially or simultaneously 

► May start other children 

► Does not put parent to sleep 


Copyright (c) 1993-1994, David Moskowitz. All right reserved. 



User Centric OS/2 Application Design 


Process concepts 

► What do 1 want to isolate? 

► What do S want to protect? 

Think about resources not execution. 


Single tasking 



Multi-tasking 


# 




W 

w 


w 

# 


# 


# 


Threads 

► Dispatch-able unit 

► Shares resources of process 

► Start, suspend, resume & kii! 

► Can create in a suspended state 

► Any function, subroutine, or subprogram 
started In a special way. 


Copyright (c) 1993-1994, David Moskowitz. All right reserved. 






User Centric OS/2 Application Design 


Threads 


Thread concepts 


► Parallel possibilities 

- Background operations 
» Any blocked request 

- User Input 

- Hardware access 


► Long tasks 

- File I/O 

- Message processing 

- Paints 

- Printing 


This is just a start -- think about it. What can you do 
to use threads to provide rapid response. 


► What overlaps? 

► What can be done concurrently? 

► What am I waiting for? 

► Think thread pool versus create & destroy. 

► Concentrate on responsiveness! 

► How can I empty the hopper faster without 
impacting the rest of the system? 


Scheduling & priorities 

► Only one thread has the processor 

► Preemptive time slicing 

► Supports real time programming 

► Dynamic priority in 4 classes 

► 32 levels within each class 

► Round robin within class 

► Use priority properly! 


R cubed - the 3 R's 

► Rapid Response Required 
- ...to the end user 

► Requires a combination of threads and priority. 

► If the user sees the clock face or system 
performance degrades, something is wrong that 
must be fixed. 


Copyright (c) 1993-1994, David Moskowitz. All right reserved. 



User Centric OS/2 Application Design 


Thread states 


^ Running ^— 

^ Suspended 


■x 

a x 

\ 

w 

a 


1 X 

\ T 


Ready -4-—! 

_^ Blocked 


Interprocess communications 

► Pipes (between processes only) 

► Shared memory 

► Queues 

► Semaphores (both inter & Intra-process) 

► Exception handling (per thread) 

► Presentation Manager specific 


Semaphores 


Semaphore triggers 


Types 

- Event semaphore 

- Mutex semaphore 

- MuxWast semaphore 


Use 

- Signaling 

- Serialization 

- Multiples or... 

- Level or edge trigger 



Copyright (c) 1993-1994, David Moskowitz. All right reserved. 







User Centric OS/2 Application Design 


IPC concepts 

► What do I have to communicate? 

► How much data do I have to move? 

► How will I coordinate the threads? 

► How wilS 8 prevent deadlock? 

► Think controlled cooperation. 

► Concentrate on user response. 


Performance Techniques 

► Proper use of semaphores 

► Object windows and user define messages 

- Request, acknowledgement, and query status 

► Profiler and execution trace analyzer 
Use threads to enhance performance not 
overlap operations. 


File system 

► Sharing simitar to a network 
8- File & device I/O 

- Fife operations 

- Directory operations 

- Disk management 


The User Interface 

► Use the right device for the task. 

- Don't force a menu when a button wifi do. 

► Keep the interface dean and intuitive 

- Intuitive to an end user not a developer 
8- There are three types of "user friendly" 

- Novice, expert, and programmer 
8- There are 5 Sevefs of learning 

- Novice, expert, wizard, warrior, author 


Copyright (c) 1993-1994, David Moskowitz. All right reserved. 




User Centric OS/2 Application Design 


Summary The ultimate test 

The different between DOS and OS/2: 

- In D0S our responsibility was to do every „ Glve the application t0 users and , hen frlm to 

thing possible to keep the system busy. thern . If they make suggestions don't defend 

- In OS/2 our responsibility changes to keep the your actions, fix the product, 

user busy. This Is the central core ©f our 

efforts to design a good responsive OS/2 
application! 


Questions Thank you! 

► The only dumb question Is the one that isn't ► For more information contact: 

asked! 

David Moskowitz 

► The 4 R's of OS/2 application design: Productivity Solutions, Inc. 

- Remember, Rapid Response Required! 164 Avondale Road 

Norristown, PA 19403 

Voice: 610-631-5685 Fax: 610-631-0414 

internet: 76701.100@compuerve.com 


Copyright (c) 1993-1994, David Moskowitz. All right reserved. 





Overall Application Design 


Designing OS/2 Applications 


David E. Reich 
IBM Corporation 
Boca Raton, Florida 


60,30,10 

- Spend 60% of Your Time Designing 

Pay Me Now or Pay Me Later 

- 30% of Your Project Time Coding 

► Coding Is the Implementation of Design, Not The 
Time To Design 

- 10% Test 

p» Test the Implementation of the Design 

If the Design's Broke, Fix It Before It's Too Late! 


Designing OS/2 Applications 
David E. Reich 


Application Features and Initial Specifications 

« What's This Thing Gonna Do? 

- It May Seem Overly Simple, But Decide on the Primary 
Function of the Application 

- Don't Obscure This Purpose With Fancy Tools or 
Utilities 

- Utilities Are Just That; Utilities. 

- Complement The Main Function. Don't Hide It. 


Application Features and Initial Specifications 

« How Will You Present the Application? 

- Full Screen? 

- PM? 

► Full PM Windows? 

► AVIO Presentation Space? 

- Workplace Shell Interaction 


Designing OS/2 Applications 
David E. Reich 


Designing OS/2 Applications 
David E. Reich 



Application Features and Initial Specifications 

a IPC Mechanisms 

- Clipboard 

- DDE 

- Pipes, Queues 

- Data Protocols, Formats and Filters 
a REXX Hooks 

a Printing 
a Fonts 


Application Structure 

a Isolate From the Underlying Hardware 
” Use the OS/2 APIs and Device Independence 

■ Use Good Modular Design with Clean Interfaces 

■ Should You Use Multiple Processes? 

- General rule: Use Multiple Processes When You Need 
Protection Within the App 

- Communications and Data Sharing Will Be More 
Involved, However 


Designing OS/2 Applications 
David E. Reich 


Application Structure 

a Should You Use DLLs? 

- DLLs are Primarily Used for Sharing Code Between 
Processes 

- Used Also To Control Delayed Loading of Code 

- If You Have a Series of Applications That Use Common 
Routines 

- Maybe Your Whole Product is a Set of DLLs 

- Don't Use DLLs Just To Make Your EXE Smaller 

► Code Is Loaded in Pages From the EXE Anyway 


Designing OS/2 Applications 
David E. Reich 


Building Blocks 

■ Now That the Goals, Functions and Objectives are Set, 
Take the "Black Box" Approach 

- Divide and Conquer 

► Block Out And Cleanly Interface Subsystems 

- Separate Out the User Interface and Worker Code 

- This Will Help You To Incorporate Multithreading and 
"Parallelism" in the Design As Well As In the 
Development 

* Let The System Do Your Work For You 


Designing OS/2 Applications 
David E. Reich 


Design^ig OS/2 App8cations 
David E. Reich 



Designing the User Interface 

Window Design 
Presenting Data 

- Windows Are Your I/O Medium 
Window Controls 

- Sizeable vs Scalable Data (Scroll Bars?) 

~ Menus, Buttons, etc. 

Dialogs 

- Carry on a Dialog With the User, Then Go Away 

- Must Be Fast, Easy and Intuitive; Flow Smoothly 

- Can Be Used To Control Interaction With Others 
Application Defaults 

- USE THEM! 


Designing the User Interface 

a Workplace Shell Interaction 

- Objects and Templates - Step 1 

* Simple Drag and Drop Already Built In 
b» Just Be Able To Take a "Command Line" Parameter 
5 - User Must Set Up Associations or Use Drives Object 
For Drag and Drop 

- Objects and Templates - Step 2 

Create an ASSOCTABLE For The Application 

> When the Shell First Sees It, a Template Will Be 
Created For Its Documents 

> Custom Icons For Your Document Type 
& Still Just Basic Drag and Drop 

> No User Set Up Required 


Designing OS/2 Applications Designing OS/2 AppScaSons 

David E. Reich David E - Reic h 


Designing the User Interface Designing the User Interface 


Workplace Shell Interaction 
- Writing An Object - Step 3 

► Inherits All Previous Advantages 

► Can Perform ALL Functions Within the Shell 

► Can Override Methods of Its Class 

► eg. Drag and Drop Printing 

*■ Dropping onto running instances 


Workplace Shell Functions 

- Application Launching 

► Use Previous Methods 

*- DO NOT Write Application As An Object; 
Workplace Objects Become "part of “ the Shell 

- Single Process Model 

The Shell Is a Single Process 

► Has a "Monitor " Process (The Freddy Shell) 

*■ All Objects Are In DLLs Which Are Run In the 
Workplace Process 

► Communicate With the Launched EXE via DDE 
etc. 


Designing OS/2 Applications 
David E. Reich 


Desisting OS/2 AppBcaf ons 
David E. Reich 



Designing the User Interface 


Designing the Worker Code 


Workplace Shell Functions 

- Subset Functions 

► eg. Drag and Drop Printing 

► Where the User Does Not Need To See The 
Application Window 

- So, To Write An Object, or Not To Write An 
Object? 

► If All You Want Is Custom Document Objects. 
Don't Bother 

► If You Want To Include Any Other Interaction 
With Workplace Objects Such as Drag and 
Drop Printing, The 


For PM Applications, Use An Event Driven Model for I/O 

- All User Interaction Generates Events 

- To Be Delivered To You via PM and Your Windows 

- Use Your Main Window As the Work Dispatcher 

► Allows Significant Reuse of Code 

► Object-Oriented Direction - Portability to True OO 
Your Own Memory Manager Package 

- You Can Make Assumptions On Application Memory 
Usage the System Cannot 

- Map Out Memory Usage For the Application 

► Use Locality of Reference To Minimize Paging of 
Your Data 


Ctealyiing OS/2 Applications 
David E. Reich 


DoslyiSng OS/2 Appi cations 
David E. Reich 


Designing the Worker Code Designing the Worker Code 


Memory Manager Package (continued) 

- Sparsely Allocate Where Possible 

► Especially Useful For Large, Complex Data Structures 

- Use Guard Pages 

*■ Register An Exception Handler To Commit When 
Touched 

► Useful During Development To Fine Tune Usage And 
Performance - just log the exceptions and analyze 

- Write Your Own APIs to Allocate and Free Memory 


Should I Write a Device Driver? 

- 2 Primary Reasons For a DD 

► If You Need to Write Support For a Specific 
Piece of Hardware (Scanner, MIDI etc) 

► You Have Work That Must Be Done At Ring 0 
and There is NO OS/2 API That Can Do It 

- Isolate Your App From The Flardware 

► Unless Of Course, Your App Is Itself Hardware 
Support 

- If You Must Code To Hardware Specifics, Write a 
Generic Interface Package Rather Than Sprinkle 
DosDevlOCtl Calls All Over Your Code 


Designing OS/2 Applications 
David E. Reich 


Designhg OS/2 AppScaflons 
David E. Raich 



Designing the Worker Code 


■ File Layouts 

- EXEs and DLLs 

► Use DLLs For A Purpose 

► Isolate "Subsystems" Such As Hardware 
Interface Routines in DLLs - They Can Be 
Replaced Without Rereleasing the Application 

► Controlled In-Memory Code Life 

- INI Files 

► Don't Muck With the System INI Flies 

► Use Your Own INI Files For App-Specific 
Persistent Information (such as app defaults) 

Designing OS/2 Applications 
David E. Reich 


Building the Core Function 

■ Memory Manager Package 

- Your Own APIs 

> GetMemQ 

> Free Me m() 

- Many Choices 
s* Guard Pages 

> First-Fit 

> Best-Fit 

> Assumptions Based On Function 


Designing OS/2 Applications 
David E. Reich 


Prototyping the User Interface 

» First, Get the Windows Painted 

- Just Get the Windows to Come Up 
a Multithreading Considerations 

- Keep Long Jobs In Mind 

- Use the Main Window Proc as a Work Dispatcher 

- Use PM's Thread Handling 

► Object Windows 

► WinGetMsg/WinDispatchMsg 

► User Messages (UM_*) 

- Keep the User Input Thread Responsive 


Designing OS/2 AppUcaflons 
David E. Reich 


Building the Core Function 

■ Multithreading and Synchronization 

- Use PM's Object Windows 

- Semaphores 

- Critical Sections (for extreme situations) 

- Should You Even Use Another Thread? 

► Always Think Parallel Operations 

► Make Them Multipurpose (thread pools) 

► Always Consider There is Overhead With 
Threads 

► Stay Clear of Race Conditions Unless You Are 
Sure You can Control It and The Performance 
Gain Is Worth It 


Designing OS/2 Appficaflcns 
David E. Reich 



Performance 


Performance 


■ Memory Tuning 

- Code and Data Working Sets 

► Use Guard Pages To Measure Page Usage 

* Group Cross-referencing Functions In The Same 
Pages - Locality of Reference 

- Alias APIs 

For Each Function Not In the EXE, Fixups Are In The 
EXE Pleader and In Swappable App Memory 

► Rather Than Have Many Of These, Alias To Your 
Own APIs, Then You Only Have One Fixup In The 
EXE 

► Less Paging To Call System Services 

► Speeds Application Load 


a General Tuning 
- Code Load Optimization 

► By Delaying DLL Loads With DosLoadModule, You 
Don't Load the Code Twice 

DLLs are Primarily For Sharing Code Between 
Processes Anyway 

► EXE Code Loads As Needed, Why Load and Fixup A 
DLL As Well? 


Designing OS/2 Applications 
David E. Reich 


Desiring OS/2 Appflcaflons 
David E. Reich 


Performance 

■ Thread Performance 

- Change Priorities Wisely 

► Don't Starve Yourself 

► NEVER Poll (Use Semaphores) 

► User I/O Threads Should Stay at Regular Class 

- Critical Sections Should Be Avoided 

► Heavy Overhead 

- Idle Threads 

► Change To Regular Class Before Terminating 

► Can Cause App to Wait Until System Is Idle 
Before Closing 


Performance 

■ DLL Placement 

- Don't Fool With User’s LIBPATH 

► You Can Hurt Overall System Performance 

- Place Your DLL in Your Own Directory 

► Have Your Installation Program Make Your Directory 
the Working Directory of the WPS Program Object 

► It Will Be Picked Up Automatically By the "" In the 
Standard LIBPATH 


Designhg OS/2 Applications 
David E. Reich 


Designing OS/2 Applications 
David E. Reich 



Performance 


Non-English Language Support 


PM Window Performance 

- Try to Keep Often-Used Windows Around 

& WinShowWindow(hWnd, FALSE) 

& They Consume Resources, So Be Frugal 

- Fill Windows Invisibly, Then Show Them 

► Eliminates Flicker 

► Gives Visual Cues to User 

- Let PM Manage Work 

► Don't Recode Things That Default Procs Flandle 

► Use Established APIs Rather Than Messages 

- Use Proportions of System-Supplied Values 

► eg. Screen and Printer Page Size 


Stay Away From String Literals 

- Use STRINGTABLES 

- Use Message Files 

g*» Make Sure To BIND Messages To the EXE or You'll 
Blow a Whole Page on a 44 Byte Message Segment 

Use Font Metrics and Screen Proportions To Size 
Windows 

- Will Keep Your App Looking Consistent Regardless of 
Display Resolution OR Language 

- Use WinDrawText (DT_QUERYEXTENT) 

Structure Your Source Trees So All You Need To Do Is 
Change an Environment Variable To Build Another 
Language 


Designing OS/2 Applications Designing OS/2 Applications 

David E. Reitfi David E - Reteh 


Finishing Touches Finishing Touches 


The Last Thing Written Is Usually the First Thing Seen — 
The Installation Program 

- Don't Neglect It - It IS An Application 

- Make it Look Like the Application 

Multithread to Make Code Unpacking Faster; 
Update CONFIG.SYS. Write App INI files 

► Provide Online Help Concurrent With Installation 

- Provide For Multiple Installations on One Machine 

► Creating WPS Objects, Updating System Files etc. 

► Uninstallation - Remove Yourself Completely 

- Make Sure You Write It So You Can Reuse It For A 
Series Of Applications 


Media Considerations 

- Floppy? 

- CD-ROM? 

- Install Over LAN to Many Workstations? 

Packing Your Code 

- During Installation You Are Usually Not Utilizing 
the CPU at 100% - Use The Spare Cycles To 
Unpack Asynchronously 

- Every Diskette Less You Ship Is Money You Save 

- If Multithreaded Properly, Can Actually Be Faster 
Than Straight Copying 


Designing OS/2 Applications 
David E. Reich 


Designing OS/2 Appflcaflons 
David E. Reich 






Stephan B. Epstein 
Staff Programmer 
. IBM Boca Baton 


Mill 


■!►.. Benefits of an OS/2 Deveio|>fhent Process 

|p|s. i^l|sr».>pey|joisrill 1||||!| 
: ^,1f®rp|oii:Con.tro! all- Staging '/■ 


Notices 


The following :ie'rlfe :^©Jtr : a<ienS;a^s ; '^F:;r^^tl&ieiFeepi- i#eWarka : p-lt,: 
of the IBM Goi!ppratioo :: in the:Unita4 ; ?tat# and/or ottler luritri||0 

mill! mi .. - iiii 

-OS/2: 

;£\ ^ : :.|- : v.• 

. - RISC System/6QQG . , 

Copyright 1B-M Corporation 1994, All - rights reserved. • 


What this is... 

!Quality of satires and executahles 
:P : /Effective.:pe|ili j catfo it >11 
n Build 

► ';.Softwar© : tnt@§fSl . : mi 



Benefits of 


;Whet tills isn't: 


>:.;Pf0|eet;syfafif8eiient-" 

► Metrics 

► RequIrementsAnalysIs 

► CASE Environments 


^ : ; --'^s A 'I 

► Consistent Verification 

► Disaster i^^lver^;.;-;- :: i- : :. 


:»-';|lil|||pables are Ihe f inal measilre of Quality v i 
► Withoutcontfoi eversource and build, there is 
no quality! 


■ . I\fenagin8'ebde|be|!i|(|a 

► Identification of Changes 

► Version Control 

► Change Control 

► Auditing 

f Status'Accsun|irt|. Mfe ! ?i!l 







p|g!|;V;: : ::Prog;t^iii;Oreatiort - "■ : -:.i 

M^ndaird irotn ^F@yFa^tlmel , to team to Precast 
:r ; • jipependeney CWepkiog. ••■ : 


Effective tl/tatntenanpe.atid Support 


.► Recreate customerbase ; .. ' 

►; Incremental additions^and modifications 
► Record Of idiown me$‘ ; '. 


Consistent verification: 


► ;Buiid yedficai^^ 

|! Ensure proper execitipn.'-- : :::. ; '. 
% Standard acceptance criteria 
^Execute- rapidly 
>• Make widely available 
* ;: Coiittnaousiy ppfpVe:%;|';- ; 4: 


. Reduce Regressions , 1 Cycle time 
Detect errors 

Avoid propagating, fixing mistakes ; T:. 
Reduce Build Brdaks - 







pis^ferReeovefy 


;Previ@w^: : pff ©;rt^ : 

Foundation for Formal D.saster Recovery 

: -p|^r^g[e J\ ■■; :-C'".-.; ; :r; 


NMAKE Utility 


p.SS version of MAKE ;' ' 

Part of OS/2 Developer Toolkit 


;pkKEMPslie 


► rConfigurafcility' | || s ■ . 

► Flexibility lifM 
§ Rule Driven' f 

| Dependency Gttecking. : /|' 

P Automate Prograitt'Oenerltf on/ 
,►. minimal Buiid/feOuiM Mprt," ; V 

► Make Sapki^i&-;y-: : ;^ : 0'-- 

► /Dipia Driven Program Execution 


Important NMAKE Options 





ipKiiftLEMafem Usage 



;^ :;; ; S;ispp«s?s^ ^Rliy ft! pl©vp»isli«l^ ; ; pf ©ostiiTion source 
| ;;;|iffer©rit : p#r@ : ^efif?|tofis for Compiles '■. 


MAKEFILE Macro Usage: 


ii|cic 35 ep : £r G'i- ^■p|i 6 ^Sfe-X : S±^ : : 6 :!^gspj&sSEi|i^|!<q! 0 is.^ c:; \ lyraA^E 1 x^ooLrS 

C ; :: ■■• i-v : \ 

|.'-■'- ". - /•'•■' •. :. v" \'. 

*di ..::;!!;: : : ;v: - :; : . ; ]: : ;: :: i; !i i: 1 i?: ; ! : : : : ... : : : :.. / 

mwjnooi >&* \mmm . exe 

‘||'x;'v; v'•: ; : :i •'• •; :•••••::•: • g; : : £* ? ,;■•/ ; • v.'. •':. •; • •. _.'. • . . -i: • 
; |:!ir ;;• •/ •. v ” • : ‘ : : x. : ; ” ;f : * ; : V;; . •:; : ; : ; x '/:; :: ; : :; •; : • • V • . • 

.;$iili|^;J : ' prog-irp™.7• : ’!_ :::j:. •• 


MAKliiLi Macros and CondStlonal Setupj 
A*vExamj&io 


$U 4 ?i ;;:'k’.y' '''; ‘ "•• ■ \ •' • ':' . . . =;,. : : ': 

11 : -V’ : : V-V \: x v V 7 ••.' :• ' : x.... ’ ’: V.'/ . ! 7 ' : : ’ :: x : V ' !• ’• ’: 

: ••:.•: .. • • : :: '. : \ \ : :: • : : : . 7 : i i i ! •'•••:•: ; . / v : ' 

• /&■'‘ 7 / ‘ . Yy 7 / • •'•••;: i • . : 7 '' ''• •': 7 . U ’ 

• 7 V 7 . '■ > , : 7. : 7 •'!; • • '.; ,• .-, t :; • : :/.7 -7 /; 

'i • 7 V:: V.'' .-I.!!' ‘ '• •••!:.' j‘! : x V‘ .. •• ' . • • i; E. V .• • • 

OB\ 3 L J $ ($£$>>£•} ,\mai h ,- 6 by $ < BS{SI\iSh j, ' : $1 \ /' 

: : ’ ' xV V V •:'' VV- '? • ' " ' , : : ’ x ‘ ^V:: f;:’.: : 

40 §:jtoB>- /F<?$'{-OBST>A$- \* S3'. qtej '$ 'i*m -y ; : ' 

•irWaii?.•• • % . •• i: .•.••' V:-’ 

. r : • E: : : : •• : !' X ‘;J: 

'J^j; SixI'xE:ix ^^ ':*?$ 7^7!x••/:•.../ 5 x;! 

%xe 7 '. 7 $' { 04 I> 1 £T }. : /yf yy /..^ . 7 >;:v. : ; •!.. 

\^rx> 9 ra»/^& y> ctef; 






aftd; ■: 

Dynamic Envl rorlrnent Sailings 


► ^Deflng R&farenqes;.^'Madras. 

|:;;:D^iilia ? iilapiliafai^n^a : in ; :M)|ICEPILE 

inherifedMacros. 
* Sysa’^MD fife tojexecpjie iynarnic; anyimripenl 


Dynamic Environment Settings ■ Exam pie 

;; :;;;x£; : ;• : x : : -f f CDgnt;j^^ntie^^gfv:■ : -lx : t,v. , 7 ;' : ; : 7 



SB^feOGAlL-'' '•'' V ••'•:•:; . '. V: x : - : i x-Y ■•:•:; •• • • : f Y : - : :.: :X : 7 7 : ' :■ , :•::'; S? ::;: ' :: : . : - :: • •: • • ? X- : •:: Y 

S&T BASEDia-*l Y- :• V.. -V Y :;;: : V!,7Y... : 

-:'P : A?:^^BAS&DIS&'UBMCBPYfe itu : ;:: ' / Y \ V •'• ; •>;• •• • •: • • >,• ' x •'•'X :• :••,:y 

SSI- hf S~1sB£S£PIft%\j m$W?\ f IS% 7 ■• VxxV Yl;/:. . ■': : x • ) x : ' : • i- • • '••••' . \' ••• ^ • ;I V; ' VY 7 > : 

.sfei> ia*\ imhpp \ ti £ i , b , ms&VM .7:7 • > • •7 -' • :'•' ' • x • • ••-.-•. V • ' ' \: •>• • '••' '•• ••' 

ssr .^QKs-jaBis^&Asa^^ • -7 

$ Zt ■ .:iBEI»PJfPX»DKE'SC x »EH< YBBS $C££. NDXTO t . : «C&#*&,■':' . ,7 

set w^basbui R%\me x• : 'x7x 7 y' : • •: ••' -. :: 7 •...••••••'• • • .' ' '• : :••; •.7' • :' ■• ' • ' 

s&r by-skt-S'^,, q, $, o, ■&, ^:q < $, d> o ■ ' 77 : xx ; :.. ' . ■' • •• ;'\ • ■ '■■ •': 

: §&c±L<rD» •• '• ••• •'•' ' ••. : x- - \ 

BlaAfefi « %3 44 %S ^-47 3fe8 %$ . x" '•' •• ,-x'- V. ••.'••• •' . 

$acao oer : •'•'. ■ • /x 1 - :: :•:.••:•:. • •••; . : : •:,..;• -io:::-: :: : ,.-■■ vV^v:•;.;' • •• : , <•<.• •,: w • d>•• • 

: g^OEpQc.Aii •.. ••'•. ••-.y:...- •' •. • ■ •:• i.. . • •/.' . • :x'. : x: : . : : : ;x .• •: v ‘ • •, x * 


■DynamicEnvironmenlSeliinifljitiltple 



:: ••• • x.••••..•. : : ••• dv.:. : :• •• • 'v : :• •'‘ : x ::: • .• :; : •: •'! 

.w. imMtt i m ;!:■■. ' v •. ' :■ • ••- •••■..•■ ••' • v •. V " ;:•=• Wi 

\t<x>i^ : ... • ; .. . •: • v.: - ‘I 

: icmi x l tdf ^ \M l? )• $ \&%$. ? $' ia^seo rajj wools: 

iiSyS $<&$}\ its. )v;/x;:-:V: : :{;y : .V:x : . • • •• x .. : .i 
U sewi ViiirssiuSs'-?:S t.cpp-rtXB^ciAss; WW- :• 

: ''. V; : ft-.. V:' • : ’ x x’ : V. : ‘ : .. ' : • • ’ ‘ : x’ 1 -': 

BOORSKS£^$, )t \BBLB 

.ilct'fe.)..• •; . • :v: : ‘y;-.:y• .d'.;: J';y.;■ 'd'. .,,y;'. .. x'; ;X - i 


Dynamic Environment Settings texampfe; 
iPontinoeci) : 



e ; i%$ pffAi': - : : : ; x;.'.C-?'••;••• 

jfey-ELpp < 3 t DEEOG >db§ , loq •!:.;• . 

•niy. 5 tp^: y ^KOlpO •• 7hi >newt * 









pellet Testing' pVT) 

¥;.:;^^eiirsi:^eelli^ ii W 
■^f. ^p\%;^»!itileiiies -.L/i^^: 


;penefi#;Mipr : i 


Ji®y' if -; ;Si 

► Identify & Prevent Ma|f r ftegressi©ns 
I Prevent Propagati on of: Pom Software 

tv'^vc* .id ■ #?; 


^ : BVT vs. Formal Testing 

► ISVT 

": ►•ibrhitiil .Testing:::.: 'j; 

■:’•'•'•■ :%vr :1 ..-.*c faS*:'^" ; ' ;; : 

•• :'.•• ~ Detailed ; -. 

' :: '%,;AiitQmafic ; / :: ',: 

••K" ;:;-:f.'Irwolved 

■ - Shallow 

~."Pooa«M ”•;•■• 

- Wide • 

'v/r^eciffc' 

- Representative 
~ support Continued 


•,; .• Effort?.l||!I|:i!|||;|| 



. . ^etorsaffectingBW 

►. Type of Software v 
► Environment Considerations 

•.V • 

: . : ..«c System Platforms 
:."■“ Peripherals' 







.^:^. : AS*f ■ 


LAN Usage 

► Common Tools and Procedures 

► Common Source and Build Structure 

► Leverage for Development and Build 


•Cross Version Qe#|;opmefeif; :: 

ill;|:;| Multiple ■ Products 

|. *•*■ Multiple Environments 
HHP^'. • '7V:;V :,M 

► Boot Manager usage :-l|l 


Lan Usage Example 

i SingleSetof Tdol| ; | 

► Product 1 

- Single Source lllllllllllllBIIII 

- Multiple Versions 

► Product 2 

Single Source 

- Single Vernon I 

► Single System tor Development, Build Server 






Soot Manager Usage Example: 

|| Single Product, Multiple Environments 

► Single^^Versl&a of Product '" 

► Has Reference le Be^Drfve . 

► Must Test with OS/2 2,0 anti 2,1 
|ypp'pher:enyirp-nmentai fasten •': 

► Single System available tor Testing 


:lgdt|lpfiage||i||gi: 


- Mumpie Opetttln^ipystielp 

► Multiple Products . 

► leverage Test Resources 


Single Product, Multiple Environments 
(Continued) 






Example; || 

Mvltipte 




■ Configuration Management Version Control 

• Client Server 

- OS/2 Client - illllll 

RISC System/8000 AIK Server 

• Token Ring or -Ethernet 

■ TOR/IP Rrotoool - 








Version Control - 

Defect Tracking 
Access Control 


Evolution of Staging Builds (1) 


Developer 


1H! 


* family 

ilii# ©NtriiS';- .i 

V FILES . 

► RELEASES 

► DEFECTS 
^FEATURES, -" 
.►.TRACKS ' 
Revels . 

► LEVEL MEMBERS 

► USERS - o 


Evolution of Staging Builds {2} 










► Efodiiict has 3components 
- Editor 

Code changes made ; 

:► - Buiids defined via a Level 

►•;|acit#m|K)h^t:|»rfomi^^in9 builds . 1 
p'^brttont of Verified Staging Build added to a 
£!’f*rdd.iidt Build Leva! 


.Evoiuiob of f tsgipg Builds14) 


Bevel 


Staging 

Build 


Staging 

Build 


Staging 

■tiuiidr;:.: 



CMVCStagihg Builds Example 
- •. ’ (Continued) ' : . ^-:=i ; iOISIll!!illll 

To checkout a fits ?*'p 

file . c "•irelea&e apll • ; : .• 

Toobookioafita . 

’ £ lie - check ip.- -edi t : \ m a in. -c • r<fe £e'ci&' PI 7 ; pace-lease apll ;.• 

XaifeiffijJggsl . •. :C'J|oi||£.:" : pL -I-'? ■ ■■$kM2)?:¥2 

' 13 ppiape pie;' ■edl!£: : : p iliiade • ^pi 3 . : lj ; ;:::V; : ; -y. : .• Pi; • !; •<! : !: •, •: : i!•; • : j - PPil ; : ':|i- i 

•Ieve 1 member• ,-crebate : pdefeet • : iii • p'-irele:aee. apl- 1 '. ple vei' edi2 
To add a track from a. stag ing build to a product build ' 

leve lised&e d-ppdefedt: Op, ;|:|||Le a ise'/ .4pill.' -l-eve i .p* i -7 













OWG and; Staging Builds 


CM Mof irtati OS/2 en vironment 

^■^Scaialsle "v ; : 

*: Deeentralizsd: ;0 r : : 





Iliiaiilllillilliilwpre; 


James Gitg 

Personal Operating Sys|§|ll 
IBW, Soea Ftaton 


A Qtiicfc Htery'fj^ifrropiiligig Bt-Dal#;,**iiN|“Pess ,, l 


Endian Ttietriesp-; ; 

SpteritppW 

Design & Programming &uiMin*f§ 


Content 













VWliere M®J : 


cf«t$a £?pe= ; :-;f!; 4 :| 

hf{fie Most Significant Byte ; £ 
: : :S-:=Q-f- ”JefEEj(o§t w . b^t©! 

:^ : :|iiti|i;ii3|M6 : (b6^:aSsi|||)f : >|| 
the lowest address to the' I 

-11111111 

: ’‘r^pbtmoM"; fc® ^: lllilllllBi 

'4%®S4/posfihie^l' : rh^fe| 


irii® 




■ ■ that effect the byte OFdef df 
nwifibyte scalar data 

S/| Dtg-Endian 



; : S fSSfiiSI 

ll ;:," '; A+& ;a+3 

Gullivers Travels 

jy, .:," 


lliii 


■iMsi 


■H 

IKIIll 

lsbII:.-: 







: ;j:5^4^.; j* 

Little-Endian 

(Petabyte j 


s |l!illr,Eggs' 3 t;tbie«niyier fetid * Many hundred laFpe l lilf l 


Key Endian Ideas 


► A LE data item is equivalent to a 
I byte-reyerssii BE data It^ttri; 

► For code and data portability, make no 
■ : programs lng ; ^sumptIon$' ;; abo||l|i|;^ 
■ - internal byte order'd! scalar data jf 


Data Example Of Endian 


struct { double i; // 0x1112J314J516J718 } si; is 
struct { int i, j; ' // 0x1112J314, 0x1516J718 } s2; 1 
{struct { short i, j, k, I; // 0x1112, 0x1314, 0x1516, 0x1718 } s3; J 


BE Address Mapping 1! 
m& ■ im 


11 ! 12 | 13 ! 14 s 15 j 16 i 17 ;18 

00 i 01 j 02 ! 03 1 04 1 05 j 06 I 07 


1 11 1 


, •LE Address Mapping f 
MSS LSS 


11 | 12l13114 15116 jIT 118 

07 j 06 \ 05 1 04 j 03 I 02 | 01 \ 00 


11 j 12 113 

| 14 

15 116 117 S18 


15!16|17|18 

11 112 i 

13 i 14 

00 I 01 1 02 

03 

04 | 05 j 06 | 07 

: v: • ..;• 

07 | 06 | 05 | 04 

03 | 02 

01 1 00 


11 | 12 

13 

14 

15 

16 

17 118 

00 1 01 

02 

03 

04 

| 05 

06 j 07 


■1 


17 • 

18 

15 i 16 

13 

14 

11 

i 12 

07 ! 

06 

05 | 04 

03 

| 02 

01 

| 00 




James Gillig 08/01/94 AD04 


Page 2 of 9 










istruct { 


inf 

a; 

// 

0x1112 1314 

word 

double 

b; 

// 

0x2122 2324 2526 2728 

doubleword! 

char * 

c; 

// 

0x3132 3334 

word 

char 

d[7j; 

// 


byte array ! 

short 

e; 

// 

0x5152 

halfword 

int 

f; 

// 

0x6162 6364 

word 




RB+ m#A iiiv- : , .Ml :;: I S? Mfmrrfrir? S'*: •*.****/ 



j|gdii|j|pps. ApgSifrif;; 


: S* Be cognizant el the type of address nutpplrig 1 

|||p: r SE, ii, other fillSBii 

fif; : : *| B|':;dogniza«t of Its form of representation - HI 
IHIfg Lepo-Riglttfddressing or Rfght-To-Left f| 

LE Mawltti, t#R®lSSW$ M Mappings B-T4. 



James Gillig 08/01/94 AD04 


||1§A. CoinparatNg VNafr ffilpipt;;; f ; -■ 

Big-EmiUm igjli/ |||ll/pl 

fc-T-8 : form) 

A+o A+i A+a- At4 ■•• : ‘;;:ii:: : >f,'':: : :-.: • *+$ m m .• 



•• A+& : Ml- 

Little-Endian -HilliBIB! ' Little-Endian j 


Endian MmM 


* Endianess 

- Being of 8 certain 
i;?i| Endian type or Endian 
mode 

-The technical 

|£f considerations for i'; - :’ : 

!!i;iciessdittef^:i^isi 

environments 


► Endian mode - iillilMli 
i' processor executes in LE 

■• {or BE) addressing model 

p- 

I IsIdiiaiieK ; 

gi-Endian - A processor 
thatcan he s*itehedby 

to run in i 

either BE or LE mode 


Page 3 of 9 


























fil|| 


loop: cmplwi r5,0 


beq 

done i 

iwzux 

r4,r5,r6 

add 

r7,r7,r4 

subi 

r5,r5,4 

b 

loop 

done: stw 

r7,total 


MSe BE Mapping tSB tsss >-E Mapping Lsa 





► Orse source code set, many 
llfciriary versions 

lit- Recoppife the source cqe^J 
IpfeafeKjgPet (^oc^pfSjf 

- Endian Type 

;lf;’■'-=f ; SAhar>d. Ertdfetr* Cfs#d^iS:p|i;':;=:•: 
' : . exeeytrart;: Jlllll r-i JI ■!S 


" : ; : '; ••;. v. i&i&iiiProcessor ’X’ 

Recompile l -Binary |§£ \ sa "'] 

& RUIl |g|| l^ ilk Endian! 


fiinfi 

i: .Source | 
/Code | 


.; ’Processor 'Y$m 


pjiBinary 
llCode !;i 
:i;|Verskmli: 


EmulatJam 


> Endiarreffects b^drtfer: 
i xe % a ? m tc Um$ 

. .■ ~|MBil>ifti: : scafar;<JatS. I ;;i 


||i|||Prqcessor 'ZJI | 
ISA :j 
lEndiaill 


James Gillig 08/01/94 AD04 


Bi-Endian an# . 

Bii# LE controls for OS use 

BE/L.E memory (addressing) mbdetllP 

i' ll! ! Idf F. . | ".i| ■■:!!:/ : V V : 

* When In-UE mode, fields LE mapping with !| 
lllimpie address modification df Sow ortieritire©. 

|j| : ' ■.' '|jjjj$j| differences 

I'Referericethe^ip^^Arclilie^re'^ook j§ 
-Reference user’s manual!!® r lip models Hill 


mgllJPevicesi-Drivers end Endian 

Mwwww> jj <w w iwwwwwww w ^ w:>wk * w ”^ 

memory, bus, devices)!: :; 

: ; . I . .. spnsld alii . : ll.liMI lM 

!' Propislorancl memoryaddressing/model.;: 
^iBpeciati'Endiarii controls 
swapping) 

j§msibilities ;;: I; ' .i 

CQrrseatlblitvafdftvIce 

~ Perform #0 of data 






















^Swapping* Converting} 


■ MSB.. - . ■ 

0(3 :• ... • .:. m : 


LSB 

: 2%} ' :.m: : :, : ?ait 


10101010 00110011 00000111 11110000 mvtoe 

. %a . ., b , b , „.......... C 5.. „ ,U, T 


00000111 11110000 10101010 00110011 

cc dd aa bb 


■ ^XT"- : 

3. ** i ^ a V"- 


fej:•' ;■;•?;' W$\ li;!ifj : : •. V 3 : .''• •. . Byte address 

1 1 1 1 ooool 000001 1 if 0 0 1 1 0 01 ill 0 10 1 010[ 

dd cc bb aa 


smpp*i 


:&ft ||||| 


00001111 11100000 1100110001010101 

dd cc bb aa 

?: \sb 31 

v . /{Fo^-eyt® ®ord «xanspte}- . . 


Why Endian Awareness Is Important 


. ► today’s systems 'fire open, interconnected' |g||; 

' ■ : 

- Application (code| portability 

^yEndfahlpeciie eodeishot portable to systems 
oftbe opposite 

?■ •«« : ^t|fby=^ ; ';;-::Plffeibe^pif^rp^peimmlassumptions If 

-byte 


^iCNato fill 

1 ii:iiii||!ip!!!iii!l!!!ii!i|iiiiip 
||il|i . I datp . liti IS si % ail . to a I 
reversed BE data Stem 


James Gillig 08/01/94 AD04 



1^;. 

!! -tapsltf i#es’ €5Qi^S' 

1| across SE, l£ platforms 

-All Endian Neufral 

- Recompile & run capable 

- No redesign, code rewrite 

- No ES parts 


r \ Endian 

Mo Endian p lipl|IIII 

Dependencies f®P***fw 3 

, J Program 


*■ Endian Specific Program < 
may rspuira redesign, 
if; :rewrf^;p(#ppfiffe||piSFi|i:;| 
oppOsite-Endian platform: : ; 
ff f§: Necessary dependencies'; 
f|p- Unnecessary dependency j 
iff (ppii||ppg pifacficef |1 


■Emm / mm« \ 

Specific pPspesCsadBS | 

iiiiiiiliiMii 


Page 5 of 9 



















Bicil&n ill %r i *> \..i« j 

*4*11 

* Handle datacdr tecfiy ;i§|| 

~ Integer, painter, bitfield, float. instruction, etc, 

pri^ about the 

byte ; oi*ter pf a i^ata Ram "Hill 

IwiHlli® a single, ■ lllllHI 

i-llliHIBii 

|% Pointers, Casting, Urilon^Bit fields 




► Mixed use of data types m shared memory cart 
; : ;iiifeiMijiejl»ndent qh' : tiS ! Erillaih »lodSr :: i plll 

i|:;: char c; ||| 

union udata { |||| 

: int a; ||§| 

charp[4]; 

III } uvar; |||| 

III uvar.a= 0x01020304; 

III c= uyar.p(1]; He is 0x02 for BE and 0x03 for LEj Jj 

m ije 

:«# yAx ftife if|pf.' MSB 

pUt.' ;■if\ :. ■?,& | pN^llI 




James Gillig 08/01/94 AD04 


.^ypaintef. casts can niafoe program .code. f | 
if dependent on ih© Endian mode of-execution; 


Song a; 
short b; 
a= 1; 

b= ‘(short *)&a; // b=0 for BE and b=1 for LE 


BE EE 


W&l'/M uss lsb: £-pti$l 



iiljiim Bafjpi (Bit Fields) 


► A hit Held may he at different locations across platforms, 

if Eiidi^nSi Col^gifera-- ptps.;C^ 

M Pdbiarati|d and 

llllp® struct { . \ 

unsigned a :2 // Two bit field ;i 

1;S|:§: unsigned b :1 // One bit field i; 

unsigned c :3 // Three bit field;: 

unsigned pad :10 // Padding 
} bitfields; 

bitfields.c = 06; // Set bitfieid.c \ 

bitfields.b =01; // Set bitfield.b ;i 

bitfields.a =02; II Set bitfield.a 

*■ Codtetfeat uses is 

► Co*te,ti?dt n®a«fiR»*)ti^eSiNsi mask,||i^ 

§§||>C# tteat ©Tracis Wtflstaswjti atfepend^ocyoit feyt© address fen's fj&ttf at 


a b e (bHs) 






x; : : V, : ' 

















:4 ► Ai ignment is a general portability concern ||||4|f?4: 

vi: ► (Un)Aiigned data may 'be at different ideations SP 
:,' iwhieN cm complicate adWrasSKtepvl 

aligned and fcE ' Una ilgoedand IE 


’C’ I pad | 04 I 03 ! 02 ! 01 

02 •: 03 ;i; 04 | 05 | 06 | 07 


i ’C' •: 04 ! 03 i 02 01 

i 02 i: 03 | 04 I 05 106 




ix^iigt ii^daddiife 11 

r^i|pid|| 01 I 02 ] 03 | 04 I 

I 02 || 03 [ i | 04 j 05 I 06 1 07 | i* 


l char *P ; LSB JMft 

StrUCt{ * ** 

char c= ’C; \ 

integer n= 0x01020304 ; ’SIQ ; &x$ 

1 1 s; ^ |l 

I p++; // ^p points at what? ,',ftp 

I lllpclij 01 02 I 03 ! 04 ipi 

.'• • V. ••KKi p.;,: • xP.PP- • Sx • • W > : . . :/%V 02 \\ 03 04 05 ‘06 

Sftfe: m& n ts& 




» Endian Aware Program i \ 

Si|| 

;g^Alt#>stiyEndian:Ne«tr#:. 
p. - Recompile' 8$iih cilpafcii# | 
rediisJg^ <^de.fe«0lfe : ''- 
|:||‘:Needed:PS pa^japjatedl 

• jni^TO?nSi#; pill 

ii i »*• Replaceabte or adaptive i; 
;;; Endian ..ccnversidnof’d afe; 
oppoaite-Endian data 


Endian * 

|iill!!l!I 

Program 


No Endian | 
' Dependencies) 


^Endlarc p|i 
Neutral u 1 
Endian 
P ^ Specific 
:• Parts A 


Endian 1 
Neutrai;.|: 
Program: 


EiteEian 

Specific 

'Pro|lam 



James Giilig 08/01/94 AD04 


oe i#t#td* 

scalar data Item and have a dependency! 
on its addressable !$feolder |53fMS§ 



Pjhahinty Ol Application Code jf : |ij| 
&1^ii|jpdtt|rtg source cpde :%^|r :pi|^^|i;| 

':: i Isp^crff i«5 

fll is other Endian 

- Recompile & run 

I WheAporlpg ■ liNNMry;<aaictat--. 

- Emulate instruction set it target processor is 
44 different 

III processor Is'other Endian 


Page 7 of 9 












the .ERdlari: fill; 


► A special function can test what is the current 
Ertdl@r» mod® of execution 

:#define BE 1 
Mdefine LE 0 
£ char endian (void) 

U 

short x= 0x0100; 

return *((char *)&x); // return 0x01 for BE and 0x00 for LE 

!,}.i... 


y #define is_big_endian (endian() == BE) 
#define 5sjittle_endian (endianQ == LE) 

* Any program 




James Gillig 08/01/94 AD04 


HIMliff Ot DafaWr Portability 


To convert data to ether . 
Endian type’ |j§J||lf 

§||gKno«f are data type & 
Mi type for Scalar' | 
;J data end elements of | 
llt^eS&F^fodafca. (arrays, 
struct®, etc.) 

- Algorithm: ALE data 
item Ps equivalent to a 
111 byte-reversed SE data •; 
tl Item 


Ml/tdifibyte scalar- datahao: 

inte^er,lcnQ s etc.; 
. : -1 - ields : ;1111|| 

- Pointers 

!§~ Executable: inetirucf Ions/: 

t Text end binarystream ’ ..if 
Pdatahesne'Endlaneaa || 

. ".PSinqlerfoyte character M 
HI baa no 

S ~ Unicode has Endianess 

® IS010$46 BOWnxFEFP 



Page 8 of 9 









Handig^ : 1^Cfe|iques 


WWake-cod® Endian Nottfral ;|:> 1 ^§i{fetawW>;£fidiaotyp®; 

v'lsjalia M ^ ►.■Mee# data in standard It! 

: J S|peelflo’' ?t©**d {?#■ aN^p'ISldll 

•> Make- coda Endian ► ftssjpfieitij? know the data ' 

Adaptive r• ■;|f|g:' ; .¥ f*£ ||I§;!I§§tf|£«fy^^ 

wake code-Endian Aware . : - 4 ®S:Aj|^PSo ; ®®^;,.: 


How To Plan For Endian 


. Awareness . If'• :; -'||§y;;!:; : ;' ; |KI|p||l||iIlf 

* Practice J^jn i ^rograromlng 

. .; to ^c?lilis^gi'-.=csod(fi : 

>-treat EndSari as att©iherASF*Pt ofll^Kig^ 

"Mi?** iFiBiP'd#yy< : . i|^^^|^t<pyp. 5 pp:yvyyyy : 
j ^O wiij iHMi. toe IfPyyppyvP.:,'.' 

•PacfcogiIng ,'hi .:;rtr " ■ . ' ■ iyi|||f| 

Iflflffe Iptf yppptT ;•/ y . p y 

-Data portability across SW/HW platforms 


James Gillig 08/01/94 AD04 


j|^gglp|lan;^t Sappgidgt, vi;! p'=•; 

iSilSIB^MiKIl^WiSy 

|^(3&|iPf»C “.LE/neytral 'fjg 
>Taligent Appr Frame worksare : neutral || 

$ DCE RPC data conversion between EptiEylff 
r Device Drivers lor bolts BE and LEdevte^yy.' 

► PowerPC arcbite&yre Is bi~Endian - ;§t! 

jKCompilers support Endian l ; p : . > JSiKliy 

► Binary code emulation on opposite-Endian HW 




► Endian Awarepess is needed jjf 

systems far ^dnwit^ K i|::^i£i| 
Endiarts ' J||§ 

: fcTreatffldlars ; as aedtiier^^lil; 
pll^llbping software -I;}-! 


». Ertdiap'.Metitrai Design amt 
Programming are ways for 
|JafidlSn| dala , §j 



Page 9 of 9 












a echnical Report 


How to Create Endian Neutral Software for Portability 


James R. Gillig 
March 31, 1994 
TR54.837 
Unclassified 


Boca Raton, Florida 


Unclassified 


How to Create Endian Neutral Software for Portability 

James R. Gillig 
TR54.837 

ABSTRACT 


Endian awareness is needed in today's open, interconnected systems for both program code and data 
portability. Big-Endian and Little-Endian are two different addressing models of processors. Data, pro¬ 
grams and processors can be classified as being Big-Endian (BE) or Little-Endian (LE). Data and pro¬ 
grams that run on a BE processor have a different addressable byte order than on an LE processor. 
Because of this byte order difference, program code and data are not automatically portable between 
opposite-Endian platforms. Endian Neutral Design and Programming can be used to create more 
readily portable software. Endian should be treated as another aspect of portability and cross platform 
support when planning and developing software. 


Copyright IBM Corporation 1994. All rights reserved. 



Unclassified 


Content 

Introduction . 1 

What Endian Is About . 1 

System Endianess . 5 

Endian Neutral Design . 7 

Endian Neutral Programming . 9 

Portability Considerations . 15 

PowerPC Bi-Endian Capabilities . 18 

Distributed Environments And Endian . 20 

Planning For Endian . 22 

Conclusion . 23 

Acknowledgements . 24 

References . 25 

Appendix: Origins Of Endian . 26 


Trademarks Used In This Document 


27 

















Unclassified 


Introduction 

This paper is about different addressing models of processors, why it is important to software and how 
to deal with it in designing and programming for portability. The two prevalent addressing models are 
commonly known as Big-Endian and Little-Endian. They become a portability problem for both code 
and data when porting software between hardware environments of the opposite Endian. Software 
portability includes many considerations and Endian, the focus of this paper, is one of them. 

The term Endian comes from Gulliver's Travels by Johnathan Swift - "It is computed that eleven 
Thousand Persons have, at several Times, suffered Death rather than submit to break their Eggs at the smaller End. 
Many hundred large volumes have been published upon this Controversy." The relevance of this amusing 
passage through analogy to different addressing models and software portability becomes apparent with 
understanding. You may find the entire passage in the appendix. 

At first, Endian may seem confusing to understand since there are different Endian types, different ways 
to represent these types, and intertwined considerations for both code and data portability between 
opposite-Endian hardware platforms. We will unravel all this by first understanding what Endian is 
about, then how to deal with it by Endian Neutral Design and Programming, review data portability 
considerations, arid the bi-Endian PowerPC, and follow up with a discussion of planning for Endian 
dependencies. Most programming examples in this paper are in the C++ programming language. 


What Endian Is About 

Endian is essentially an addressing model that affects the byte ordering of both data and instructions 
stored in computer memory. Big-Endian is derived from the left-to-right order of writing in western 
culture languages and Little-Endian is derived from the right-to-left order of doing arithmetic 
operations in hardware processors. 


r 

Big-Endian (byte addressing) 

A+0 A*1 A+2 --> A+n 


M 

S 

B 


LI 

... 



L 

S 

1 B 


A+n 

<- 

- — A*2 

A+1 

A-K) 


(byte addressing) Little-Endian 




. rri ^ rr-i 


^ _ J)U 

. 7|Tr 



The Big-Endian (BE) addressing model assigns or maps the lowest address to the highest-order data 
byte (that is, the Most Significant Byte or "leftmost" byte) of a multibyte scalar data item. 

The Little-Endian (LE) addressing model assigns or maps the lowest address to the lowest-order data 
byte (that is, the Least Significant Byte or "righmost" byte) of a multibyte scalar data item. 


1 




Unclassified 


A multibyte scalar data type such as an integer halfword or word has Endianess (is BE or LE). Its byte 
order when compiled for a LE processor is the reverse of the byte order compiled for a BE processor. 
The simplest way to think about Endian is that a LE scalar data item is equivalent to a byte-reversed BE 
scalar data item. Such a scalar should be treated as a single, indivisable data item although it has more 
than one byte and is composed of smaller addressable units of storage. Aggregate data such as a file, 
data structure or array are composed of multiple data elements and each element that is a multibyte 
scalar has Endianess. A byte value or single-byte character data does not have Endianess because the 
smallest addressable unit of memory is one byte and so byte order is not an issue. 

Some processors are Little-Endian (Intel**), others are Big-Endian (IBM AS/400, System/370*, 
Macintosh**) and some are bi-Endian (PowerPC*, jointly developed by IBM, Motorola and Apple**) 
and can run in either BE or LE mode. In turn, the Endianess of software, program code and data, is 
determined by the processor for which it is written. Actually, the bi-Endian architecture ofthe PowerPC 
was determined by the need to support the large user investment in both LE applications and BE 
applications with the same powerful processor and hardware platform. 


The data structure example below shows how Endianess can affect addressability and byte order. When 
a data structure containing different data types is compiled for a BE processor and again separately for a 









































Unclassified 


Endian maps and forms 

The following example is based on the same sample data structure as before but illustrated in the 
alternate right-to-left addressing form for LE. The advantage of this form is that the scalar data items 
appear in the more (western culture) readable left-to-right order. 


f LE Example (Right-to-left address form) j 


07 

06 

05 

04 

HI 

12 

02 

13 

01 

14 

00 

21 

22 

23 

24 

25 

26 

27 

28 

OF 

OE 

00 

oc 

08 

OA 

09 

08 

’O’ 

| 'C* 

8 B’ 

’A’ 

31 

32 

33 

34 

17 

j 16 

: 15 

14 

13 

12 

ii 

10 

■ 


51 

52 


'G' 

T 

; *E' 

V > 

IE 

ID 

1C 

IB 

1A 

19 

: 18 





61 

62 

63 

64 





23 

22 

21 

20 


_ J 


An Endian model maps addresses to the bytes of a multibyte scalar. There are different ways to illustrate 
Endian maps and forms of data for human viewing. For a LE data item, its byte addresses are shown in 
either left-to-right order or right-to-left order with its byte values appearing in the opposite order. For a 
BE data item, both addresses and bytes are shown in the same left-to-right order. The relationship 
between BE and LE mappings and their forms of representation are shown below. 



In addition to BE and LE, other related Endian maps and forms may exist as part of a processor's 
addressing architecture or its implementation. Some special forms may be internal to a processor, 
normally transparent to software, and should not be confused with BE and LE which is visable to 
software. Other Endian types of processors may exist but are not common as is BE and LE and so not 
covered here. BE, LE are most common but one should not categorically assume that they are the only 
addressing models in existence and that all data in the world is only BE or LE. 


3 
















Unclassified 



pointer or float. A programmer may write code that treats a scalar as aggregate data by addressing a 
specific byte location or byte subfield internal to the scalar. This practice results in code that is not 


M.Wliiiil Bil \i Iji 


data item is at address 04 for both Endian types; however its two component bytes are at different 
































Unclassified 


System Endianess 


The classification of a processor, program or data according to the addressing model it is based on 
(usually BE or LE) is its Endian type. A processor or program is said to execute in BE mode or LE 
mode. And Endianess means being of a certain Endian type or mode and, more generally, the technical 
considerations for executing in different Endian modes and porting program code and data between BE 
and LE platforms. Endianess is not limited to any particular component of a system but can occur 
wherever data is addressed, retrieved, stored, processed, or transmitted. Endianess is pervasive 
throughout a system and manifests itself in different ways as illustrated below. 

f Endianess is pervasive throughout a system 1 


Applications may be BE/LE 


Programmable Endian 
controls may exist 


LAN^^) 





Data interchange may be BE/LE 


< -> -.III;: |1 

<— - WQ Devices 

< - > •$. 

Devices/adapters may use BE/LE model 

Address model 
may be BE/LE 


-c 


*;Rrocessofi 


os 


J 


A single-Endian processor is architected as either Big-Endian or Little-Endian such as Intel processors 
which are LE. Some processors are bi-Endian such as the PowerPC which has the ability to run in 
either BE mode, LE mode or both under software control. Bi-Endian capability makes it possible to 
migrate existing operating systems, their applications and data from both BE and LE platforms to a 
common bi-Endian processor like the PowerPC. The operating system is responsible for handling 
Endian specific controls, registers and interrupts that a processor may provide. The section on PowerPC 
Bi-Endian Capabilities discusses this in more detail. 

A processor has Endianess as a characteristic of its architecture. Therefore any hardware unit such as a 
video display, printer, or communications adapter that has an embedded processor takes on its Endianess 
as does any software supporting it. The Endianess of input/output data and commands between devices 
and adapters attached to a system of the opposite Endian must be taken into consideration. Commands 
and data transferred between a device driver and its device can become a problem (i.e. become byte 
reversed) when the device driver is running on a LE platform and the attached device and its microcode 
are r unn ing in a BE environment. A device driver must account for the Endianess of the processor on 
which it runs when implementing a device interface specification. Typically, all related system and 
attached hardware from a given manufacturer has the same Endian type. 

The user of a stand-alone, single-Endian system with all of its data being of the same Endian encounters 
no Endian related problem. If data of another Endian type is imported by LAN, communications, diskette 


5 







Unclassified 


or some other media then software must handle conversion to the correct Endian. Endian conversion 
of data requires knowing the data structure, data type, and Endian type. A cross platform application that 
runs on different Endian types of platforms needs Endian conversion capability for data interchange 
with itself across different platforms. When applications are different, a conversion utility can be written 
to convert data files between different applications running on opposite-Endian platforms. 

Program source code is compiled into data and executable instructions. The machine executable 
instructions of compiled code is essentially data when handled by software when being compiled into 
binary code, loading from disk for execution and being managed by the operating system. When being 
handled as data by other software, binary program code is subject to the same affects of Endianess as 
data and should be treated with the same regard as multibyte scalar data. 


Why Endian awareness Is important 


Endian awareness is needed in today's open, interconnected systems for program portability and data 
interchange across BE and LE platforms. 

There are two basic consequences of Endianess: 

• Code may not be portable to systems of the opposite Endiaa This is a result of Endian specific 
program code that twiddles with the internal bits and bytes of scalar data and assumes an Endian specific 
(BE or LE) addressing byte order. 

• Data may not be (automatically) interchangeable between systems of the opposite Endian. 

This is a result of LE and BE data items (multibyte scalars) being the byte reverse of one another. 


How does a developer deal with these issues? Program source code portability can be facilitated by 
writing Endian Neutral code that is more readily portable across BE or LE. Data portability is achieved 
by conversion of the Endian type when the data's structure, data type and Endian type are known. These 
topics are covered in the sections on Endian Neutral Design, Programming and Portability 
Considerations. 


6 



Unclassified 


Endian Neutral Design 


Software designed and written for Endian portability is said to be Endian Aware or Endian Neutral. It 
can be ported to either BE or LE platforms more easily as compared to Endian specific software. It is 
recompile-and-run capable. This is for source code portability which requires recompilation to the 
instruction set of the target processor. Endian awareness is acheived by the following process: 

•Endian Neutral Deagn 

•Endian Neutral Programming 

A program designed and written so that it depends on Endian specific, low-level properties such as 
address and byte order is an Endian-specific program that runs only in BE or LE mode and is not 
easily ported to the other Endian. Endian Neutral design is the identification of all necessary Endian 
dependencies in a program's design, separating these dependencies out from the rest of the Endian 
Neutral design as Endian-specific parts, and isolating them as best possible through interfaces and 
conventions. 

An Endian-aware program is mostly Endian Neutral but may have well-defined Endian-specific parts. 
An Endian-neutral program requires no source code modification and can run in any Endian upon 
recompilation to another processor. The Endian Neutral part is realized through Endian Neutral 
programming which is the topic of the next section. Any Endian-specific parts will require some 
modification for Endianess when porting the program to a processor of the opposite Endian. 

The Endian Neutral Design goals for a program are to separate the Endian Neutral and Endian 
Specific parts of the design, minimize the size of any necessaty Endian Specific part, and minimize any 
necessary modifications for porting to another Endian type ofprocessor. 



The benefits of Endian Neutral software include these: 

• Increases the opportunity to exploit other platforms with more readily portable software (Recompile-and-run) 

• Easier, less costly portability because a program does not require redesign and code ai port time 

• Improved design and programming implementation through Endian Neutral Design and Programming 

• Full technical understanding of addressing models and Endian issues by development team 


7 




Unclassified 


Three levels of program design and code dependencies that can occur for Endian are: 

®LevdOne (1): Necessary dependency, Endian specific (or possibly adaptive) design and code 
®LevdTw© (2): Unnecessary, address-dependent bit & byte twiddling within multibyte scalar 
• LevdTlira(3): Inadvertent, unintentional and miscellaneous side effects that introduce dependencies 

Most code will have no necessary dependency and thus by definition be neutral. However, if a program 
must be Endian aware, then the commitment should be to a level one design. Level two occurrences 
should be avoided by following the Endian Neutral Programming guidelines covered in the next section. 
Level three occurrences may happen in spite of a commitment to level one. For example, different 
compilers may internally implement language constructs differently that result in Endian dependent side 
effects, or the use of commercial libraries may introduce Endian dependencies, or maintaining 
compatibility with existing tools, software or data may introduce other dependencies. One must discover 
and learn how to deal with their level three occurrences. 

Endian Neutral design and programming should produce only level one dependencies. All or most 
program code should be Endian neutral! Endian Neutral code should be the norm for a program and 
Endian Specific code (level one) be implemented only as necessary. 


Points in a system where level one Endian dependencies can occur include these examples: 

® An application may provide Endian conveision for data interchange 

• An application may have both a BE version (binary) and LE version based on the same set of source code 

• An operating system has the responsibility for managing a processor's Endian related controls if any exist 

• Device drivers have the responsibility for handling the input/output interface to a device and any End™ 
differences between the processor it runs on and the attached device being controlled 

• Communications and LAN software have the responsibility for handling Endian differences between 
connected systems at the transport control leveL 

• Conveision utilities may provide for the end user to import data from an opposite-Endian program 

• Compilers for programming languages may provide compiling options to generate different Endian type 
code and data. 

• Debuggers and dump utilities may provide options for viewing data in different Endian forms 

• An instruction set emulator may have to emulate the opposite Endian on a platform 


8 




Unclassified 


Endian Neutral Programming 


T his section provides programming guidelines for writing Endian Neutral (EN) program code that is 
source code portable between BE and LE processors. The guidelines and examples are based on the 
C++ programming language but the principles are the same for any language and apply to portability in 
general. EN programming is good programming practice and many of the examples shown here are 
contrived to illustrate practices to avoid. More general issues having to do with portability including 
program source code, binary code and data portability are further discussed in the section on Portability 
Considerations. New program code should be examined for Endian dependencies that may have been 
unintentionally introduced during development. 


Use a high-level language 

Programming language keywords in a language like C++ allow the declaration of data types and 
aggregate data and provide for correct data type conversion. Operations such as casting , union and bit 
field allow flexibility and optimization for handling data but require Endian awareness by the 
programmer to assure the production of EN code. High-level language constructs should be used for 
better programming consistency and handling of data. 

Assembler language does not offer the high-level constructs and data type checking as does a language 
like C++ and is more difficult for architecture neutral programming. Assembly language is machine 
architecture specific and not recommended for writing Endian Neutral software. However, using a 
high-level language is neither a necessary nor sufficient condition for making software Endian neutral 
and, in general, the EN guidelines covered here apply to assembly language programming as well. 

Object oriented design and programming can provide a higher degree of neutrality than procedural 
programming alone because objects hide data from direct access by pointers from outside the object; 
however, the object class and its methods are still responsible for implementing Endian neutrality within 
the object's program code. 


Use data types correctly 

A data type should be treated by executable program code as intended for that type. A scalar integer, for 
instance, is treated by the processor as a single data item that is indivisable and represents a numeric 
value. The location of bit and byte subfields within a scalar is variant between BE and LE so treat data 
according to its data type, length and Endian type. For portability, do not twiddle with the internal bits 
and bytes of scalar data while being dependent on their individual byte addresses. EN Practices to 
follow are discussed in the next several subsections. 


Organize aggregate and scalar data 

Program code becomes Endian dependent when a multibyte scalar data item is treated as 
aggregate data containing multiple pieces of data across its bytes. Multiple pieces of data should 


9 



Unclassified 


be organized as aggregate data using proper programming language constructs such as a data 
structure or data array. The individual members of a structure may be a scalar element or 
another aggregate data element with its own members. 

The programmer should be cognizant of aggregate data and scalar data when programming and 
treat scalars as single, indivisable, non-aggregate data items, and organize scalars as members of 
an aggregate data construct when having to deal with multiple pieces of data in a collective 
manner. 


Avoid pointers to within scalars 

Do not point or index to smaller units of storage within the internal byte structure of a scalar. 

LE data is byte reversed BE data and so internal byte positions are different. Do not address, 

point, or index to a byte, halfword, or word scalar that may exist within a longer data type. For 
example, a short integer contains two bytes, an integer contains two short integers and a long 
integer contains two integers. 

Accessing bytes internal to scalar data through pointers and indexing is an example of a poor 
practice as in 

long a = 0x01020304; 
char c, *p; 

p = (char *) &a; // set up pointer to a 

c = p[2]; // c is 0x03 in BE mode and 0x02 in LE mode 

Multiple byte data elements can be defined as a byte array such as char p[4J which is 
independent of Endian. 


Avoid overlaying scalars 

A data item is said to be overlayed when it has more than one meaning or type. 

Examples of overlayed data are: 

• Using ashort integer within a long integer 

• Using the high order byte of an integer as a flag 

• Using a bit field and a binary value in the same integer 

• Using a scalar as an array ofbytes 

A longer data type should not overlay a shorter data type so integers should not overlay 
characters and longer integers should not overlay shorter integers. Overlaying data is not the 
same thing as sharing memory for mutually exclusive use by different data types (see the 
discussion on union in a later section). Bit fields can be used but not overlayed with other data 
(see the discussion on bit field in a later section). Sometimes programmers overlay data to save 
storage. Other times it may be done for cleverness when in fact the storage savings is not that 
valuable and extra program code may be necessary to get at the desired piece of data. 



Unclassified 


Avoid making assumptions about data type 

In general, the same data should not be used as different data types. Type conversion can 
corrupt data and introduce Endian dependencies. Different data types can have different byte 
lengths and the same data type may have different lengths on different processors. 


Knowing the data type length is important 
for portability although independent of byte 
order and Endian. The sizeofO function can 
be used to determine data type length for a 
variable d as in sizeof(d). 


Do not use constants for length values as 
they may not port to the correct length 
values on other platforms. Knowing the 
length of character encodings for string 
processing is sometimes necessary; and 
using the constant 1 for character length is a 
common practice with single-byte character encodings which have no Endianess but may cause 
processing errors with 16-bit Unicode** characters. (See the latter section on Unicode in 
Poitability Considerations). 


r \ 


sizeof(char) 

fchar [ 


Scalar 

sizeof (short) 

short 

Data Types 

sizeof(integer) 

sizeof(long) 


integer 

long 

=□ 

!□ 

sizeof(float) 


float 

=□ 

sizeof(doubte) 

1_ 


double 


\ J 


Be aware of Endianess with casting, union, bit field 

C-h- provides programming constructs that programmers should be aware when using because of 
possible side effects on data in the same Endian mode or different Endian modes. 


Casting forces a data type conversion to another type such as short to long or char to short. Pointer 
casts or reference casts allow a program to view a variable of one data type as if it were another type and 
so make program code dependent on the Endian mode of execution as in 

long a; 
short b; 
a~ l; 

b = ‘♦(short *)&a; // b = 0 for BE and b= 1 for LE 

Here the cast to a short pointer results in pointing to different data depending upon whether the 
execution mode is BE or LE. More generally, and independent of Endian, do not cast a longer type to a 
shorter type because unless it is certain the value fits in the smaller type it can lead to data corruption as 
a result of type conversion as in 

ini a; 
char b; 

b = (char) a; // Data loss, but no Endian problem 


11 




Unclassified 


Union allows sharing the same memory by different variables and data types. Do not mix the concurrent 
use of different data types in union and do not use it to do type conversion. The actual data currently 
stored in union, its actual data type and its referenced data type must be consistent. For example, 

char c; 

union udata { 
int a; 

char p [4]; 

} uvar; 

uvar.a = 0x01020304; 

c = uvar.pfl]; // c is 0x02 in BE mode and 0x03 in LE mode 

Here the array name p should not be used to access data stored with variable a because they are different 
types. For example, p[0] will access the most significant byte of integer a in BE mode and the least 
significant byte of a in LE mode. 


Bit field is a set of adjacent bits that allows efficient and convenient use of memory for implementing a 
program's flags, switches, or discretes. As an example of a bit field defined in an integer 


struct { 


unsigned one : 1 ; 

// 

one bit field 

unsigned two : 2 ; 

// 

two bit field 

unsigned three : 1 ; 

// 

one bit field 


} bitfield; 


A program can reference a field by name such as bitfield.fwo. Alternatively, a program can perform its 
own bitwise logical operations to select, set and test bit fields but must not depend on byte address and 
order otherwise such code will become Endian specific and not portable to an opposite-Endian platform. 
Data portability and compiler implementation of bit fields is another issue. Within an integer, fields 
may be assigned in left-to-right order by some compilers and right-to-left by others. This presents 
additional complications that the programmer must contend with in addition to Endian byte order when 
exchanging data across systems. Remember, code and data portability are different albeit related issues. 


Avoid alignment complications 

Data alignment is a general portability concern and, although independent of Endian, can complicate 
assumptions about byte location along with Endian. A data item is said to be aligned when its address is 
a multiple of its byte length. Thus a two byte short integer aligns on an address that is a multiple of two. 
A four byte long integer aligns on an address that is a multiple of four. An eight byte long integer aligns 
on an address that is a multiple of eight. If the architecture requires it, compilers by default will align 
data. The same data item when unaligned may be at a different location than when aligned. 

Assumptions about alignment, byte location and Endian byte order can become more complex as shown 
in the example below where a character (one byte) and integer (two bytes) are shown packed 
(unaligned) to possibly save memory bytes. When aligned, a padding byte is inserted by the compiler to 
force the integer on a proper even address boundary. 


12 



Unclassified 


char *p; 
struct { 
char c; 
integer n; 

} s; 

p = (char *) &s.c; 

P++; // p points to what byte ? 


f 


\ 

Even address f 


Odd address 



Even address 


Char 


Unaligned 

m 

n | 



i integer 

Aligned 

c 

P# n j 


Pad i 

k - 




In the above code example, the pointer p ends up pointing to the pad byte if the data is aligned, to the 
most significant byte of n if the data is unaligned and BE, and to the least significant byte of n if the data 
is unaligned and LE. 

In addition to Endian related complications, unaligned data can cause extra work (time) for the 
processor and operating system to retrieve the bytes of the data type and reconstruct the data item. 
Aligned data provides better processor performance but may use more memory for padding. Aligned 
data can sometimes be organized so as to reduce the amount of memory (ovehead) consumed for 
padding. For example, pad bytes are added for aligned data as in 

struct { 

short a; // Two pad bytes between a and b 

integer b; 
long c; 

} s; 


and not needed when the same data is organized from longest to shortest data type as in 

struct { 
long c; 

integer b; // No pad bytes 
short a; 


To reduce padding for aligned data, avoid intermingling different data type lengths and arrange data 
from long to short lengths. 


The Endian Tes t 

An alternative to being more than just neutral is to be adaptive. If a program queries or tests the 
processor to decide on the Endian mode of its current execution so as to take a LE processing path or 
BE processing path at run time, then the program is said to be Endian adaptive. If the processor does 
not provide a means for telling software its Endian mode, then a program test can be improvised as 
shown in the next example. 


13 







Unclassified 


An "Endian Test" can be implemented as 

#defme BE 1 
#defme LE 0 
char endian (void) 

{ 

short x = 0x0100; 

return *((char *) &x); // return 0x01 for BE and 0x00 for LE 

} 

and Endian macros can be defined for reuse in a program as 

#defme is_big_endian (endianQ = BE) 

#defme is_little_endian (endian() = LE) 

Endian adaptive code is Endian Neutral in the sense that the same source, without change, can be 
recompiled to run in the other Endian mode. Recompilation is necessary for a different processor 
instruction set as well as Endian type. 

As an example of how to make code neutral with the "Endian Test" consider this earlier example 

long a = 0x01020304; 
char c, *p; 

p = (char *) & a; // set up pointer to a 

c = p[2]; // c is 0x03 in BE mode and 0x02 in LE mode 

which can be written with the use of the macro as 

if 0 s _big_endianjc = p[ 1 ]; else c = p[2]; // c is 0x02 in BE or LE 

or even more simply without the macro and independent of byte order, for this particular example, as 

c = (a & OxOOFFOOOO)» 16; // reliably yields 0x02 without a test 

This example assumes long is four bytes but this is not a safe assumption for portability. An alternate 
implementation of this example is to declare long a instead as a character array a[4] in which case a[2] 
is the same data 0x02 in either Endian mode as single-byte character data has no Endianess. 

The designer/programmer must be careful with an adaptive implementation to make sure it is portable 
for BE and LE across the required processors and compilers. A programmer may be able to implement 
necessary Endian-specific code with more portable Endian-adaptive code; nevertheless, writing 
Endian-neutral code is the first objective to acheiving portable software across different Endian types of 
platforms. 


14 



Unclassified 


Portability Considerations 


A user of today's open, connected systems needs the capability to interchange data between different 
systems. Data can be interchanged through media (diskettes, disk, tape, etc.) and local and wide area 
networks of client, server and host communications. Data portability requires the ability to handle 
differences between the Endian type of the data being ported and the Endian mode of the system to 
which it's being ported. This section covers different aspects of code and data portability related to 
Endian. 


Endian conversion of data 


Data conversion between BE and LE requires knowing the data type, length, and Endian type for all 
data elements of an aggreagte data layout to be converted such as a data structure, array, file, or table. 
The Endian conversion algorithm between BE and LE is straight forward - reverse the byte order of a 
given multibyte scalar data item. A prerequisite for conversion and often the crux of the conversion 
problem is knowing the aggregate data layout or organization of the data to be converted. Data is often 
only understood by the application that creates it. 


Application data 

When importing data created or processed by a program running on another platform, the data's Endian 
type, as well as other data characteristics, may need to be converted. Typically the receiver or importer 
of the data does the conversion and this practice/policy is known as receiver-makes-right. 

Data can be readily interchanged between the same application running on different platforms because 
an application understands its own data. So a BE version and LE version of the same application 
running on two different platforms can exchange and convert data to the correct Endian type of its 
resident platform. 

To interchange data between different applications, a conversion utility can be written that understands 
an application's data and converts it to another application’s data format and Endian type. Data file 
formats often become public for popular applications. For example, different versions of a word 
processor product that runs on an IBM PS/2 (LE Intel), Macintosh (BE Motorola), and a RISC platform 
(bi-Endian PowerPC) may need to import data from another word processor. 

A data resource that is self describing can be handled, created, and converted by any program that 
understands the public specification of its format and data descriptors. For example, if a piece of data 
has associated descriptors for its data type, length, and Endian type, then it can be easily converted. 

Data can be kept in a standard form (also known as a canonical form) for easier conversion. For 
example, if a program always writes its data as LE, then a program running on a BE platform knows to 
convert that data from LE to BE upon reading the data from some magnetic/optical media, network or 
communications link. 


15 



Unclassified 


Application code 

There are different ways to port a program to run on other processors. The most common way is to 
recompile the source code to run on the new processor and another way is to emulate the original binary 
code and its non-native processor instruction set on the new processor. 

A program can be recompiled to run on the instruction set of a different processor 
(recompile-and-run). If the new processor is of the opposite Endian then the source code, unless it's 
Endian neutral, will need to have its Endian-specific code modified to run in the new Endian mode 
before recompilation. Recompiling an application to another processor produces a new binary verion of 
the program that will have to be serviced and supported. A given application may have different binary 
versions of it for running on different processors and in different Endian modes. The application's 
source code set, any Endian-specific parts, and all binary versions of it will have to be maintained. 

Emulation of binary code requires an Instruction Set Emulator or ISE to emulate the original processor's 
instruction set and Endian mode on the new (non-native) processor. Compiled, binary code undergoing 
emulation is treated as data by the ISE. If the new processor is of the opposite Endian then the ISE, 
running in the Endian mode of the new processor, has the additional job of handling the byte reversed 
instructions and data of the program being emulated. 

A special consideration is a bi-Endian processor. A single binary version of an Endian neutral program 
cannot run in both BE mode and LE mode of a bi-Endian processor even though the instruction set is 
the same! That's because the address model, and therefore (scalar) byte order is different for both 
executable instructions (binary code) and data. The benefit of a bi-Endian processor is that existing LE 
and BE applications and their operating systems can be ported to it and still run in their native Endian 
mode. An application must be compiled to the Endian of the operating system and processor it will run 
on. See the section PowerPC Bi-Endian Capabilities for a better understanding of bi-Endian processors. 


Application and system resources 

Today's systems are becoming more modular and open with increased sharing and reuse of software 
resources. A programmer needs to be aware of the Endian effect on reusable resources and make them 
Endian Neutral where possible so they'll be more readily portable. Graphical User Interfaces have 
resulted in the proliferation of presentation presentation resources. These include icons, dialogs, 
controls, and image bitmaps. Other program resources can include pointers, integers, arrays, structures, 
and headers. Resources are created and passed around for reuse in different programs and on different 
platforms. Other resources include device drivers, presentation drivers, objects, and server resources, 
and files. All these kinds of resources can possibly introduce Endian dependencies, unknowingly, into a 
program for which the programmer must be on guard through awareness, inspections, and testing. 


Text stream data 


A text stream or binary stream is composed of byte data. A byte is the smallest addressable unit of 
storage, therefore character data has no Endianess, is neutral and portable. This is for single-byte 
character encodings handled by the character data types (signed and unsigned). If the byte stream is not 


16 



Unclassified 


pure character data but includes pointer, integer, and float data then treating it as a byte stream preserves 
the same Endianess without introducing erroneous byte order changes. 

By creating information as character data and treating it as a byte stream (addressing one byte at a 
time) a program can be Endian Neutral and avoid Endian issues. However, treating data one byte at a 
time under processor control is not as performance effective as treating data as an aggregate of bytes. 
The expression, conversion and handling of non-character data as character data may entail an overhead 
in execution time and program code. Consider, for instance, expressing and handling the digits of an 
integer as a character array. The advantage of this approach which may be useful in certain situations is 
data neutrality and portability. 


Unicode and Endian 


The Unicode Standard defines a fixed width, uniform text and character encoding scheme. All Unicode 
characters are represented as 16-bit values. For example, the hex value 0x0041 represents letter 'A', 
0x0020 is the space character and 0x0409 represents the character named "CYRILLIC CAPITAL 
LETTER LJE". Unicode values must be treated as single 16-bit unsigned integer values. As with all 
other multibyte scalar values, Unicode data stored as binary data in a file, or other interchange media, is 
Endian dependent. Data interchange programs must be sensitive to the endianess of the source and 
target platforms in order to manage Unicode data correctly. 

To help deal with Endian conversion, the Unicode Standard describes an optional technique that can be 
used by programs which manipulate Unicode data. The standard defines the value OxFEFF as the 
character named "BYTE ORDER MARK" (the BOM). Applications may use this character to explicitly 
announce the endianess of the data. The byte-swapped mirror image of the BOM, the value OxFFFE, is 
not a defined Unicode character. Therefore, an application expecting the BOM and finding OxFFFE 
instead knows that the Unicode data is not in the endian format expected. The application may then 
decide to perform byte swapping to convert the Endian type or notify the user to run a conversion 
utility. 

Unicode was developed by a consortium of companies (The Unicode Consortium) to address the 
difficulties of text representation and handling across hardware and software platforms and across 
international and lingual boundaries such as English, French and Japanese. The problems are especially 
apparent in the representation of Asian languages. Each encoding scheme requires different 
programming techniques to correctly manipulate the character data. Unicode has been adopted by the 
International Organization for Standardization as codepage ISO 10646 UCS-2. Unicode provides an 
unambiguous, fixed width character representation for languages of the world which enables 
programmers to manipulate character data without worrying about the encoding scheme and language 
being used (i.e., whether it is Japanese text or English text). 


General portability issues 

There are many portability issues having to do with programming practice and data treatment in addition 
to Endian, the focus of this paper. These include, for example, conventions and guidelines for value 
ranges of integers and floats, data type length, alignment, calling conventions, executable binary load 
module format, ANSI language standards, and others. 


17 



Unclassified 


PowerPC Bi-Endian Capabilities 


The PowerPC (PPC) is a RISC (Reduced Instruction Set Computing) processor. PPC is a bi-Endian 
architecture that supports both BE and LE addressing models. This section discusses the capabilities and 
benefits of the PPC. Reference the PPC 601 User's Manual and PPC Architecture for additional detail. 


Bi-Endian modes of operation 

The PowerPC architecture is designed to provide the flexibility for hardware and software developers to 
choose the Endian mode required when migrating their current operating systems and applications from 
other Big-Endian or Little-Endian platforms to the PPC as a common bi-Endian hardware platform. The 
following PPC sample program is used to illustrate the address mapping of its 32-bit executable 
instructions when running in BE mode and LE mode. 


PPC Assembly Language Example 

loop: 


done: 


PPC Example - BE address mapping 


cmplwi 

r5,0 

Byte 

Address 

00 

beq 

done 


fwzux 

r4,r5,r6 

08 

add 

r7,r?,r4 

subi 

r5,r5,4 

10 

b 

loop 

stw 

r7,total 

18 


ioop° cmplwi r5,0 


beq 

don© 


00 01 02 03 

04 

05 

OS 

07 

fwzux r4 s r5 9 r6 

add 

r?,r7,r4 

08 09 OA OB 

oc 

OD 

OE 

OF 

subi r5,r5 s 4 


D 

loop 


10 11 12 13 



16 

17 

done: stw r7,total 





18 19 1A IB 

1C 

ID 

IE 

IF 


These examples illustrate how program instructions are like multibyte scalar data and subject to the 
byte order effect of Endian. 


Each individual PPC machine instruction 
occupies an aligned word in storage as a 
32-bit integer containing the value for that 
instruction. In general, the appearance of 
instructions in memory is of no concern to the 
programmer. Program code in memory is 
inherently either a LE or BE sequence of 
instructions even if it is an Endian neutral 
implementation of an algorithm. 


PPC Example - LE address mapping 



beq 

done 


loop: 

cmplwi 

r5,0 

07 

08 

05 

04 

03 

02 

01 

00 

■ 

add 

r7,r7,r4 


fwzux 

r4,r5 s r8 

Up 

OE 

oo 

OC 

OB 

OA 

09 

08 1 

■ 

b 

loop 

■ 

subi 

r5,r5,4 

17 

16 

15 

m 

13 

12 


101 

■ 







II 

IE 

ID 

1C 

IB 

m 

■a 




































Unclassified 


Endian mode selection 


The operating system is responsible for establishing the Endian mode in which processes execute. 
Once a mode is selected, all subsequent memory loads and stores will be affected by the memory 
addressing model defined for that mode. Byte alignment and performance issues need to be understood 
before using an Endian mode for a given application. Alignment interrupts will occur in Little-Endian 
mode for the following load and store instructions as described in the PowerPC Architecture reference: 

• Fixed-Point Load Instructions (see section 3.3.2 of PowerPC Architecture) 

• Fixed-Point Store Instructions (3.3.3) 

• Load and Store with Byte Reversal Instructions (3.3.4) 

• Fixed-Point Load and Store Multiple Instructions (3.3.5) 

• Fixed-Point Move Assist Instructions (3.3.6) 

• Storage Synchronization Instructions (3.3.7) 

• Floating-Point Load Instructions (4.6.2) 

• Floating-Point Store Instructions (4.6.3) 

For multiple byte scalar operations, when executing in LE mode, the PPC takes an alignment interrupt 
whenever a load or store instruction is issued with a misaligned effective address, regardless of whether 
such an access could be handled without causing an interrupt in Big-Endian mode. For code that is 
compiled to execute on the PowerPC in LE mode, the compiler should generate as much aligned data 
and instructions as possible to minimize the alignment interrupts. Generally, more alignment interrupts 
will occur in LE mode than in BE mode. When an alignment interrupt occurs, the operating system 
should handle the interrupt by software emulation of the load or store. 


Byte reversal instructions 

A very powerful feature of the PowerPC architecture is the set of integer load and store instructions with 
byte reversal. The distinct benefit is to allow applications to interchange or convert data from one 
Endian type to the other without experiencing any performance penalty. These instructions are: 

Ihbrx (sthbrx) Load (Store) HalfWord Byte-Reverse Indexed 

Iwbrx (stwbrx) Load (Store) Word Byte-Reverse Indexed 

These instructions are ideal for emulation programs that handle LE type of instructions and data, such as 
the emulation of the Intel instruction set and data. The use of these instructions significantly improves 
performance in loading and storing LE type of data while executing PowerPC instructions in BE mode 
and emulating the Intel instruction behavior; this happens without encountering the byte alignment and 
data conversion overhead found in other architectures lacking these byte reversal instructions. Currently, 
access to these instructions is only through the use of assembler language until C compilers step up to 
the opportunity to automatically generate the right load and store instructions for this type of data. Until 
then, C programs will have to rely on masking and concatenating operations that will generate more 
instructions and be lower performing than direct use of these assembler instructions. 


19 



Unclassified 


Distributed Environments and Endian 

A distributed application running between client desktops, servers, midframes, and mainframes is 
dependent on the communications model and its API (Application Program Interface) for resolving 
Endian differences. In a mixed, distributed environment, applications must be able to compensate for 
differences in data representation between the systems that participate in the application. 

Specific implementations for handling Endian and other conversions exist within applications written to 
lower layer communications APIs. Higher level application development models like DCE RPC provide 
more general and robust support that isolate applications from these differences. 


Communications API 


Today, most existing distributed software is written directly to a communications API. Typical 
communication interfaces are TCP/IP (Transmission Control Protocol/Intemet Protocol) with a sockets 
or streams interface, NetBIOS with its own Network Control Block based interface, or various SNA 
(Systems Network Architecture) or OSI (Open System Interconnect model from the International 
Standards Organization) interfaces. 

Although communications APIs guarantee that data will be transmitted/received between network 
nodes, they do not understand the data types being transmitted and cannot convert data or data 
attributes, including Endian type, between clients and servers that have dissimilar data representations. 
This forces a distributed application to compensate for any differences. 


DCE RPC 


The Remote Procedure Call (RPC) of the Distributed Computing Environment (DCE) allows an 
application to be developed essentially as if it were non-distributed, while providing the support to allow 
any of the application's subroutines to be executed on a remote system. The RPC application 
development model divides the local (client) and remote (server) parts of a program along an 
application's internal procedural interfaces. 

Since the remote procdures are application defined, they must be able to support a variety of high-level 
language data types. These data types include ini, char, and stinct. RPC hides the fact that data 
communications has happened between a client and server subroutine, and one of its functions is to 
interpret and convert native data representation differences that may exist between the communicating 
systems. These differences include the addressing model (Endianess), alignment rules, character set 
encoding, floating-point conventions, and numerical data formats. 

Unlike writing directly to a communications API writing to the DCE RPC interface allows a developer 
to ignore data representation and Endian conversion. DCE RPC supports a well defined, broad set of 
data types that it can convert. They include most scalar and vector types of the C language as well as 
some extended types for use in a distributed environment. Examples of the later include a byte data type 
to protect data from any conversion and a pipe data type to transfer large blocks of data. 


20 



Unclassified 


Client/server conversion 


The RPC data marshalling and unmarshalling routines handle the bulk of the data conversion 
responsibility. Marshalling is the process that converts typed data into an encoded, linear buffer suitable 
for data communications. Unmarshalling recreates the typed data by interpreting the encoded data in 
the buffer. The marshalling/unmarshalling process takes, for example, a struct data type, decomposes it 
into its elements, and writes the data and a description of the struct into a single logical buffer. 
Unmarshalling rebuilds the struct by reading the data and description contained in the buffer. 

For a typical client server call, there are at least two data transfers. One is from client-to-server, the 
second is the return flow back from the server-to-client. The RPC subsytem takes the arguments from 
the procedural interfaces and assembles them into buffers using the Network Data Representation 
(NDR) encoding rules. The buffers constructed by the RPC marshalling routines include the data itself, 
as well as descriptors defining the type, size and relative location of the data and its elements. Additional 
protocol information is also included, and one of these fields describes the native data representation of 
the transmitting system. Embedded in the buffers containing the transmitted data is a variable that 
classifies the data as Big- or Little-Endian. 


Typical DCE RPC Call/Return Sequence 


App 

Client 

RPC subsys. 

Data transfer 

; RPC subsys. 

App 

Server 

Cal 

serverf) 


nAi i 



Marshall 

to-' 






Transmit 

_ tefe. 





Unmarshall 
& convert 

Execute 





subroutine 





return () 
to client 


Unmarshall ^_ 

Transmit 

Marshall 

continue 

& convert 





PPT1 IPM * 






nmmmmomMmsmmm. 



J 


The algorithm used to properly decode or unmarshall the data buffers uses the principle of 
receiver-makes-right. The receiver determines from the protocol information whether the transmitter's 
data representation is the same as its own. If it is the same, no conversion is necessary. If it is not, a 
specific, standard conversion routine is called per data type unmarshalled from the received packet(s). 
The data can then be presented to the application in the native machine format. 


21 





Unclassified 


Planning For Endian 


The rationale or motivation for being Endian Aware are: 

Portable data - to allow the interchange of data in open, connected systems and be 
unconstrained by Endian type 

and 

Portable program code - to offer software products that can exploit a larger 
hardware base and be unconstrained by Endian type. 


Open data interchange and cross platform support can be better accomplished with software products 
created with Endian Neutral Design and Programming in mind. Planning for this is not a commitment to 
exploit other Endian platforms but prepares one to do so if the opportunity should arise or becomes a 
necessity. 

Endian is more than just a technical consideration. It is also a product planning consideration from 
design and development through packaging and support. Endian Neutral software should be a natural 
byproduct feature of the development process. How to create Endian Neutral software should be part of 
every developer's understanding and is good design & programming practice. 

Planning for Endian should be treated as another aspect of cross platform support, program code and 
data portability. Planning for Endian includes these considerations: 

• Education - educate the development team about Endian Awareness. 

• Endian Neutral Design & Programming - should be part of the development process and implemented 
early in the process to keep portability costs down; inspect design and code for being Endian Neutral. 

• Tools - compilers, debuggers, linkers, etc. must support different Endian environments. 

• Product Test- test process and test cases must account for testing any supported Endian. 

• Source Code Maintenance - maintain Endian Specific and Endian Neutral source code. 

• Packaging - all processohEndian versions of a program product must be packaged 

• Service & Support- all processohEndian versions of a program will require support 

• Data Portability - data interchange across platforms, Endian, and applications must be understood and 
supported with data conversion capability. 

The best strategy when creating new software is to make it Endian Neutral from the beginning. 
However, some existing software may be Endian specific and relegated to a single-Endian environment 
Although a program's code may not be portable, its data may still have to be portable. Software planned 
for cross platform support should be neutral An evolutionary strategy is to make new software Endian 
Neutral and make existing software neutral whenever maintenance changes are made to it. 


22 



Unclassified 


Conclusion 


When developing software products and programs, create Endian 
Neutral software for recompile-and-run program portability to either 
Big-Endian (BE) or Little-Endian (LE) processors. 

To write Endian Neutral source code, make no programming 
assumptions and dependencies on the byte addressing order of multibyte 
scalar data; corollary one - do not twiddle with the internal bits and 
bytes of a scalar data item while depending on byte order; and corollary 
two - do not treat a scalar data item as aggregate (multiple pieces of) 
data. If some Endian-specific code is necessary, minimize and isolate 
those non-neutral parts for more manageable rewrite-and-replace 
capability at porting time. 

When importing data from another hardware platform through media, 
network, or communications, the data may require conversion to the 
other Endian type (BE or LE). Receiver-makes-right is a common 
policy. Conversion requires knowing the imported data organization, 
data types and Endian types. Endian conversion is done by reversing the 
byte order of each multibyte scalar data item to change between BE type 
and LE type. 

The supporting applications, system software and data for a 
single-Endian processor is either BE or LE. The capability of a 
bi-Endian processor makes it possible to migrate application code and 
data from different BE, LE processors to a common, bi-Endian platform 
like the PowerPC and run those applications in their native Endian 
mode. 

Data's Endian type and the Endian mode required to execute a program 
should be treated as additional aspects of cross platform support and 
portability when planning and developing applications and systems. 


Endian 


23 



Unclassified 


Acknowledgements 


The following people were especially helpful in producing this paper. 


Art Adkins, IBM, Austin, for his review. 

Ken Borgendale, IBM, Boca Raton, for his review. 

Norman Cohen, IBM, Hawthorne, for his review. 

Ian Holland, IBM, Boca Raton, for his contribution to the section on Unicode. 

Roy Ritthaler, IBM, Austin, for his contribution to the section on Distributed Environments. 
Tim Shortley, IBM, Boca Raton, for providing the latitude for me to work on this paper. 
Rick Simpson, IBM, T.J. Watson Research Center, Yorktown Heights, for his review. 

Mark Wieland, IBM Austin, for his contribution to the section on PowerPC and his review. 


24 



Unclassified 


References 


Distributed Computing Environment, Understanding the Concepts, ISBN GC09-1478-00 

"On Holy War s And A Plea For Peace", USC/ISI paper by Danny Cohen, 1 April 1980 

Open Software Foundation, Application Environment Specification, Remote Procedure Call, 
ISBN 0-13-043688-7 

PowerPC Architecture, First Edition, May 1993, IBM Corporation, (part# 52G7487) 

PowerPC 601, RISC Microprocessor User's Manual, 1993, IBM Corp. (part# 52G7484) 

PowerPC 601, RISC Microprocessor User's Manual, 1993, Motorola Corp. (pan# MPC601UM/AD) 

The Unicode Standard: Worldwide Character Encoding Vol. 1 and 2, Addison-Wesley, ISBN 
0-201-56788-1 



Unclassified 


Appendix: Origins Of Endian 


The terms Big-Endian and Little-Endian come from Part 1, Chapter 4, of Jonathan Swift's Gulliver's 
Travels. Here is the complete passage, from the edition printed in 1734 by George Faulkner in Dublin. 


... our Histories of six Thousand Moons make no Mention of any other 
Regions, than the two great Empires of Ulliput and Blefuscu. Which 
two mighty Powers have, as I was going to tell you, been engaged in a 
most obstinate War for six and thirty Moons past. It began upon the 
following Occassion. It is allowed on all Hands, that the primitive Way 
of breaking Eggs before we eat them, was upon the larger End: But 
his present Majesty's Grand-father, while he was a Boy, going to eat 
an Egg, and breaking it according to the ancient Practice, happened 
to cut one of his Fingers. Whereupon the Emperor his Father, 
published an Edict, commanding all his Subjects, upon great 
Penalities, to break the smaller End of their Eggs. The People so 
highly resented this Law, that our Histories tell us, there have been 
six Rebellions raised on that Account; wherein one Emperor lost his 
Life, and another his Crown. These civil Commotions were constantly 
fomented by the Monarchs of Blefuscu 4 , and when they were quelled, 
the Exiles always fled for Refuge to that Empire. It is computed that 
eleven Thousand Persons have, at several Times, suffered Death, 
rather than submit to break their Eggs at the smaller End. Many 
hundred large Volumes have been published upon this Controversy: 
But the Books of the Big-Endians have been long forbidden, and the 
whole Party rendered incapable by Law of holding Employments. 
During the Course of these Troubles, the Emperors of Blefuscu did 
frequently expostulate by their Ambassadors, accusing us of making 
a Schism in Religion, by offending against a fundamental Doctrine of 
our great Prophet Lustrog, in the fifty-fourth Chapter of the 
Brundrecal, (which is their Alcoran.) This, however, is thought to be 
a mere Strain upon the text: For the Words are these; That all true 
Belivers shall break their Eggs at the convenient End: and which is 
the convenient End, seems, in my humble Opinion, to be left to 
every Man's Conscience, or at least in the Power of the chief 
Magistrate to determine. Now the Big-Endian Exiles have found so 
much Credit in the Emperor of Blefuscu's Court; and so much private 
Assistance and Encouragement from their Party here at home, that a 
bloody War has been carried on between the two Empires for six and 
thirty Moons with various Success; during which Time we have lost 
Forty Capital Ships, and a much greater Number of smaller Vessels, 
together with thirty thousand of our best Seamen and Soldiers; and 
the Damage received by the Enemy is reckoned to be somewhat 
greater than ours. However, they have now equipped a numerous 
Fleet, and are just preparing to make a Descent upon us; and his 
Imperial Majesty, placing great Confidence in your Valour and 
Strength, hath commanded me to lay this Account of his Affairs 
before you. 


26 



Unclassified 


Trademarks Used In This Document 


Trademarks and registered trademarks of IBM and other corporations are designated with * and ** 
respectively upon their first occurrence in the text. 


* AS/400 is a registered trademark of IBM Corp. 

* IBM is a registered trademark of IBM Corp. 

* PowerPC is a trademark of IBM Corp. 

* PS/2 is a registered trademark of IBM Corp. 

* System/370 is a trademark of IBM Corp. 

** Apple is a registered trademark of Apple Computer Inc. 

** Intel is a registered trademark of Intel Corp. 

** Macintosh is a registered trademark of Apple Computer Inc. 
** Motorola is a registered trademark of Motorola, Inc. 

** Unicode is a registered trademark of Unicode Inc. 


27 




ADO 5 


Maiilyii Masses* 
Rickard Dews 





> Cod© utidamlaFtdtn^code compte-jdty 

* OBft vs, Windows login flow 
. 3rd parly libraries ' 

* Wrappers v$> Native 

* 16 bit vs. 32 tat 

e 4731 Differences In Windows i ^ OS/2 
.1371 in OS/216 OS/2 32 


- Analysts 

~ API difficulty 
► 000 Mamsttomt mfy 
*0iO Utemt replacement 
v 020 Replacement with parameter 
*■ 030 Change with mem/fees API case 
*■ 040 Logic changes required 
*- 050 FtmctkmMy does not exist 


- Code replacement 

« APt Macro / functions . 

« Code-assist replacement 

* Unsupported features 

* Platform specific features: 

- Tools 

► SMART Analysts 

► SMART Port 

*- Resource conversion 

* Migration Assistance 



ADOS 


The Harta/Tra® Ersiama 


Barry L Bryan 
Senior Programmer 
IBM Boca Raton 


/The Boca Solution 



| Logs 
j-T races 
*> System Dumps 
Process Dumps 
> Pump Analyzer 


. M A ■■ • •• 

• • ••• . ' '' '■ • 


A puzzle, a mystery! 


'Srr or •■ L AB0.JEXE n 111.1 IJ1111I HI I r 


igj I A program generated an access violation at 000100aa. 

•:•! 'LAB0.EXE 0002:0861 GGaa 

gj I P1=0QG00GO0 P2=ffffffff P3=XXXXXXXX P4=XXXXXXXX 

g EAX=O0OOc8cf EBX=O0002910 ECX=0000OOdf EDX=0000000O 

iji: j ESI=O0O00030 EDI=O00000G0 

g j DS=001 f DSACC=60f3 DSL8M=Q0001 aef 

g j ES=G017 ESACC=00f3 ESLIM=O00G290f 

ijij !FS~150b FSACC“00f3 FSL!M=00Q0Q030 

g |gS=0GGO gsa cc=>»»»« 

ijii j CS:EIP=000f :000000aa CSACC=G0fb CSLIM=00OO?e71 
g J SS:ESP m 0D1 f:OGO014bO SSACC~00f3 SSLIM^OGOGII aef 
g EBP=0G0G14d6 FLG=G0O12246 


I Options 

i •&) End program/comnnand/operatlon 
j i;$ Redisplay error message 


Postmortem Analysis 

K fofoxyaujcff i MiopPB cj ^ 

^ Logs 

► Traces 

► Dumps ami Dump Analyzers 




mmm 



► Logs 

► Traces ... "\ .. : .: : , 11(111 

► Dumps and Dump Analyzers 


SmGG APIS 


Miiiiillli lll igl 


tOOAOOiNTBSBS ULONOU* PVOfO 

liiliil 




The Trace Bafitr 


jgyesosjoaM] wopsc# mumm wwm&oooj us«$wifo«»j timr^: 
MtlwWl 

vmmm mm% mmm Mwnpm imi fH > 

iwwjwwi m\$m mmm wmwm *«*<„♦ 

Rwmiww? m m% w$n m mm pm mmwm im • h > 

oo oe 

pSJ 

ev6wt«^i mmm mmm wmwm mmpm *tm<»■> 

&nsmww\ itoiosesg wumiooi tmmymvi i«w«^joow8 

m) i^ijwwfejfv 

*W*«WH| mmnwmm rm<H, 

Thh Wywtom>W$ K^lw^^^^SOO 

mmmrn pwm mw$m titm&mmwter™ 

oe oe 

























Static Trace' 


U5H0BT API ENTRY DosSysTrace( ligill 
ySH0RT8la|pr* ' r Major code 240*255 Y 

USHORT length, /"UogibpfBuffrrY 
USHORT Minor, f*mMtewUk*f 
PSYTE Butter); 


jBBWl Posftriotifarij Analysis || 

rill;; ;j||| 

► Traces 

► Dumps and Dump Analyzers 


■ Dynamic Tracing 



Kernel Support 


► C0NPI0.$YS$t&tensents for,.. 

-TRAPDUMP 

- DUMPPROCESS 

- SOPPRESSPOPUPS 

► Kernels Supported ' • 

~ OS/2 2.1 OA 

-* OS/2 2,1 OASP (Service Pack) 

• - OS/2 2,11 p«mufiS»*!iturfna Rofrwh) 

~ OS/2 2,1 for WINDOWS 

- OS/2 2.1 tor WINDOWS ♦ Service Pack 

- OS/2 2,1 "I for WINDOWS ttefreeh) 










* oh*, xs l» 

« Drive X: maybe diskette or bard file (&rt>rt«io n ) 
- Automatic re-ipi 

«* CREATED# not required for diskette 




trafdwp * m , x: 

«* System dump by Ctrt*Alt-Numtock*Numlock 
for hangs 

- System dump automatic for Ring 0 traps* 
IPEs 

~ System dump automatic for Ring 3 traps ' 

~ Drive x; may be diskette or bard file {FAT partition} 

- -CREATED# not required for diskette 

REPLAN | OFF 
* Automatic re-tpl 


Memory Dumps (cent) IIMIlllilll 

HI! 

diskette 


Process Pomps 

>DUMPRROCES$«.3ss lll lillil 

~ A file is created on drive jcrfer Rin g $ traps 
- Processing continues 









PopUpa 

► $UPPRg$$POPUPS * XI 

~ PopUps are aupprassed 

- Wrtg $ trap information written to a tile on 
<*«1ve x: 

- Propping eotitlrttte* 



DosDurapProcesa 




IEK>$F<jrc6Sy$i«»ftompiULOI i tG reserved} 











Frasentatioa Manager 



™.v jp 

[Tile VEdit ;.Options: Analyze Help' v / v:/\x/\ :••: •• vv : . 

!l- r .:i 


:ea*=00GO0e0O ebx=00800014 ecH=800ea087 edx=5e20a087 esi=00000bff edi=00000006 i 
;fiip a 00002 /2d eap m OO00Ba68 Bbp a G0OO8a7O iopl^Z -- -- -- nv up ei rig nz na po nc | 
cs°d02f as“002f d8=aOB7 es»dl37 fs”150b ga“OOO0 cr2®GO00O0OO cr3»O00OOOGO I 
;d02f:G000272d c‘J leave i 

: H !' 



WDF * Analyse Process 


•PMf)F. H:\DUMROATA.001 


File Edit Options f" Analyze Help 
T i System + 


| Process * 

Process Info 

IptdaT 

Thread * 

Thread Chain 

(TCBs) 

Synopses + 

Module Table 

(MTEs) 


Local Descriptors 

(LDTs) 


Memory Objects 

(MOs) 


1 !□ 







































PUDF *. Analyze Thread 


1 i^MDMl \DUMPf>AT A.001..'* .XX y 


File Edit Options 


Analyze Help 
System 4 [ 

Process 4- j 

Thread ■* j[ Ring 3 l Stack Trace 
[ Synopses 4 j King 2 / Stack l race 
■ Ring 0 / Stack Trace 
j Call Gate 


!□: 


ft/tous# Button 2 


. jRKtflf 'H UMfPf i A.TA .001 


File Edit Options Analyze Help 


DQSCHLLl 0riSS2R3fcXI IRUDR: 

'■ mvwmmgm eeeaaii 

:tt Loading version da 
Loading structure ini 
: . Done. 


tt .pH 

Slot Pid Ppid Csicj 
*0081# 007f 0000 0071 
U dOlt : OOOOOZaf DUSCfi 


^oujoana.. ..... 

List Near 
UnAssernble 
Selector Into 
Unwind Stack 
Thunk Address 
Display Memory 
Structures 
Chains 


0000:dQlf02a7 


/MR1 


please wait 


* SD pPlDR 
4 b9c000 7bd63da0 
+ UR 


pfCH: 

7bd2i 


PMDF-Svrvoosls 


7f '"PMUf- H \flUMPD A l A i«U I . BR9 

File Edit Options 

Analyze Help j 


System 4 : 


Process 4 


Thread 4 


Synopses 4 System Synopsis 


: Process Synopsis 


: Trap Screen info 


Semaphore Analysis 

i 

i 

i 

i 

i 

i 

j 

Desktop State 

J 

J 

..jllj 

--—*- - 1 


lillill li WiiiiMlIliiil 


fjf, PtMF ::: hAD&lpD AT A.001 


File Edit Options Analyze Help 


List Near 
UnAssernble 
Selector Into 
Unwind Stack 
Thunk Address 
Display Memory 


TIDDR: 

521fdOOOOO jnp 000 
ta ... please wait 
Fa for OS/2 2.1 SP/HR1 


0000:d01f02a7 


please wait 


[ Structures j ExEntry_s 

Chains 4 : memstat_s 

rSD pPTDH pTCB 

bb9c0G0 tMEgggar7bd2 

!j ptda_s 


: tCb_S 


; vmah_s 


1 _WND 


: _MQ 

r 

...... 1.......... .1....................IXj KSEMSHR 

L1..X___ 

| KSEMMTX 

..] 

----~i KSEMEVT 

_j 






































Adding Help to Your OS/2 
Applications 


Mic hael Kaply 
IPF Ctevelopraefit 
Boca. Raton 


Creating an IPF File 


► legging similar to GMLor 
Sookmaster • 

*■ Can use tools 

- HyperWse 
-}PFB(8tor 

► compile wito iPFCftom 
OS/2 toolkit 

- I8F file (standalone} 

- HU*rBe{a}>f#fcmtort 
tuelp) 


sttseiniUxu 

MAftlMi 

liililiis!!li!!!lil!l 


ti; 



Help Manager Programming tntertace; 
*• 6 Win APIst 

- WinCreateHelplnstanoe 

■ - WinAssoeiateHeJpirtstence 

- WinQueryHelpinstanee 

~ WinOastroyHeipInstfmoo 
-WinCreateHelpTafcie 

- WinLoatIHefpTable 
*• 1$ PDF APIs . 

► 32 Massages 

































Enabling Help Wi$iin Your Application 


HelpTabtes 


» Create help fabie 

* Create help menu {if applicable} 

»InStiaiiieHEEPINITatmctwe • 

* Create help Instance 

*• Associate help instance with a window 
» Process HMJ* messages 
*• Destroy help instance 


*■ Can be specified In memory or as a resource 
~ liemory 

► tielpInltphtHelpTafele % helpTableS/IAIH 

- Resource 

* helpinibphtHeipTable * OxffifOOCO | 
MAIN„H£LPTABtE 
*■ Jtffain HelpTable 

- Entries for all windows 

- General Help 

*■Help subtabies : : l!l;i!|l!!!!!!!Hi! 1 lijllli 

Hi Entries tor each control IIKIIIIIIIIII 

► Provides for context-sensitive help 


feiain Help Table He! p SobtabSe i 


Resources- 


S.eso'u rc«f 



mxxumsvmmmM 

BM-W 


m$m 

xomarwis. 


m&mawm 

EKTJSEli’BJgmBh. 






MeittOtF? : ... 


Meaio-ty rasfl&aa »&i& hal© takle} t 

mumm& = 


iEBLra&IiS fcelpSuM'aMe^UJ 0 = 




mjmmm, impmm&iimjx,. swjBS&ejram,. 


!lll«®l*™illiiill^«lllilllllllllllll 

e, mi«, 0 


. IDIOTS, ITKSLSEMBiKNEJj, 



llii«iiijIIIIII#IiIiillliiIII*llllllll®l||l 

ll«lliil«®i«llll®«lll*llllllill»llll 









HlliH 


Msaao lo^paiMwm eseiiOad 

SBOIR III! 

svwmm n ~mip"< insole 

&e<hk 

MSSUI^ “Help “index®, Se.HSbPlMJiEX^ 
!SIS„SYSGGHHMB> 

MSSHTITW “-Inessa kelp", sqjlg^EXTm^O, 
WIS^SYSCOJffiWOT 

MEROIfBM ““Using faelp“, BELUSISSSEUI*, 

Mrsum® 

MBROlfEM ““Keys help®, SCjaSEME'S'S, 

MIS m S YBCQMMAHD 
MOTUIfM SEPARATOR 

MK8UITS® ““Etodttcfc i&fOption", I33SLABOUP, 
MIS TEXT 



► cb 

*- uiRetumCode 

> pszrfuforiaiName 

* pldHefpTable 

* bmodHeipTable 


hmodAeeeiTabte 


idA^ffabie-' 



eizeof(HELPINlT) 
return value 
Pointer to tutorial 
name (if applicable) 
Pointer to help table 

Handle of module 
(DLL) containing help 
table 

Handle of module • 

modified action bar DLL : 
ID of modified 
ilacoeierator table lllllll 


a^piHi'r bsipinity 


» sizeofi msismm )? 

belpinit .txljfeetumCo^e « 0L| 
lialpinit .pssTttfcoriall&aift© - MUIiL? 

- i?mzm (o*f sztww 
t mPL®raM)? 
ul t *- &* 
ixelp-Ani t* hmo<iAcic«lfe©t i ojxBarMo4ial e “Of 
kelpinit^xd^c-cel^abie "■ §$ 
lielp-init. id&ctionBar ~ 

X. *p$t » * ? Eteip tw: My \\ 

h^tpini t » 

Ix&lpxnit .pfstBStelptaibraryjKfame « i!i MYA.££ 



*■ IdActionBar • ID of modified action 

* pezWefpWindcwTltle Pointer to heip window 

* fShowPanetID ' CM 1 C„H 1 DEJ>ANELJD 

CMlCJ>HOWJPANEL„iD 
► pazHelpLlbraryName Pointer to namefs) of 

lliil|:;:' HLPfiiee .. 















Create Help Instance (WioCreateHelptnataece) 


*• Inputs: 

- HAB - anchor block handle 

~ pmmmr - pointer lo HBtPJNIT structure 
* Outputs; 

- HWttD - handle to help Instance • . 

X&B Ixab-j 

ID imkmvtpxmtmv*? 
mhvxmx h&tpi *iu 

tance « 

WiKGreat-eH&lpIiistaKO© {h%& r &h©ipiixit) $ 


Process RML* Messages 


* HM„ERROR 
«. Process error messages 

- mpl * error code 

~ mjmmrjmsjmu* 

« Return keys help panel 
WNLCOMMAND - IDMJJSJNGHELP . 

- wtnSendMsg( hwndHelptnstance, 
HM^PISPLAYJHEU 3 , Ot, 01 fc 

Other message IhlPPOulde and Refeiencte 


Associate Help Instance 
(WinAssoctateHetptnstanee) 









Biiiiaiiiiiiiii 


Expanding the Scope of IPF 


*- Menage hexes* foul dialog* f Bo dialog 

f. Message hox - specified In WinMessageBox 

« Fite dialog - D»„FILE„OtALOQ 
- Font dialog - OI0 FONT3IALOG 
*■ Create empty help table 


* Dynamie Date Formatting (DDF) 

► Communication objects' ii:'MMr3SWi 
~ Appltcation^ntroiled windows (aeviewports) 
- Anther-defined pyahbuttona 
~ Coverpagecontro! 

*• Help for Workplace Shell icons. 

* Adding Items to the Master index 


Dynamie Data Formatting (DDF) 


► IS APIs 

*■ Despond to HMJE&JERYJ5DFJ>ATA message 
* Generate help text "on the ffy w 
*■ Available elements 

: :; ; |11 

« Colors 

- Fonts 

- Links 

lllilfl 

iliiili illlBIII IIBIBBIII ■■ 11 IIII 1 


DDF Implementation (.IFF file): 


*■ ;#». teg 

► Speofftes res 10 

► sxs or oy- meeives • - 

«KLOUERyjODFJOATA 

*-mpi=reslO 

* cawr text «»* fee included 

|||ilj;p|||||||||lil|llii^l| 


>p« ! 

|s|| i» mt>x& t&xt 









DDF Implementation (.C file): 


GLOEG nlKesiXD? 

I^PE 1 X£$?.? 

3$®$£ 

^witc& ^JBisg) C 

case HM_aOERY w DDFJ3&TAt 

xn&fixm * wwmpm?i m% U 

mm ~ mmuau^{ ox, 

switch { tildes Hi) { 
case Is 

D&fPara ( iiDDF) # 

B«f$fe*t ( KPPFr «rni« text was placets lay 

III 

return {ftBBF)j 


Appliealion-Contrgllecl Windows {aovtewpotts) 

► Application programmer has complete control 
over window 

► Provide® away to place P8/tstandard controls in 
an 1PP window 

*■ Must use :acviewport tag In IPF tile 

► Size using vpx, vpy> vpex, vpoy 

liSSS 52 *= 11 - SS^^™ 

objecti3afc« + aiiY into 4 dfc>je«?ti<l* t l 4 ' 
ypx-ri-pixt vpy^top vpax~£&% vpc^p-itot* 















Coverpage Control 


Respond to HiajstOTiFY * 0PEN„C0VERPAGE 

Coverpage window handle in mpl 

Use standard PM calls to manipulate window 


switch fiasg) { 

bmlwfi??? 

switch {Brnmimomz t m&n $ 

ififli;.;',; case o 

MnSet^in&cw^ext { £&&&&) h spS, * Custom 
Window Title*) i 

hraa&r 

) /* cM^witch */ 

} /* endmitch *f 


Adding Entries to the Master index 


*- Global attribute on index entries 
*■ HLP lie must be located In HELP path 

1111 

- Use sparingly 

- Be sure text maltes sense outside of your 
application 

ih±*k l£ew cnbrF in the Master Index 
sil id^newentry gl-ohal^ft. new entry 

wmmm^ wnmn 

s&tig&E&c#* 


WinCreate0b|eot <C) or SysCreateObjeot (Ri 
Setup String 

- HELPLIBRARY* helpfile 

- mipmmi- res id 


result - : j 1:1;:!!li-i;; : : ! !:.;;!%|!|I;:;:;;; 1;;:;:l 

8^Cg**ta o&i&vti "WPSTogicm***®? 


Mm mmm 

ra&PrAHEl<wl*J : :;i 


iiiiiiiiiiiiiiiii 










Trademarks 


► OS/2 is a registered trademark of IBM 
Corporation 





ADOS 




OS/2 acd tniernalio^altzaion of 
Applioatsofi$ 


lllllllll! m»Why% II 

§§|liillli;:;,: 

► Cultural Difference 



Th»co*t» 

Cost of Unenabled Design || 

- lower at the outset {simpler design) 

- Higher after retrofitting 

- Function Changes i*e« Sorting etc, 

- isolation ot Wi 
Cost of Enabled Design 

- Higher Initially (complex design) 

- Potentially cheaper in the long run 











Cultural 'DHterenee* 


Whaley i$fhis? : 

03/12/94 


= ; .' Pate Examples 

September 14,1994 


Albania 

1994-9&44 

Btigaeia. 

. 1<$44X~I4 

FmfaaA 

i4i$4994 * 

Italy 

wwm 

"Hettoiaiids 

14 1994 

IMte# States 

mmm 


C.nad.uf-rencln 


#4-03-14 


► -Order of Year, fiHontH and -Bay 

► form of Year and Month 

► Delimiter 



Cultural Differences 










Time Formate 


► Hour Convention 

ill i 


► Designations 


22:42,00 

kl 22.42 

22,42,00 

22 h 42 1 

Ms 

BUMIllll 

Switzerland 

Quebec 

Alternate Week endings 


Alternate ft/ionte Speoifloations 

Weekend 


C October lOjlMSSIIlll: 

feraai Friday, SafeFday 


Islamic 

13 Safer 140? 

Islam Thursday, Friday 


Ha&raw 

16 Tishri 6746 


iilliillilliSi 









Alternate Calendar Formate 

WecfThe Rf^kfel 1 SufiWonTu? 


mm 

ISII 

wm 

mm 

Hi 

Wiiii 

mm 

ll: i 

lii 

Illl 

illl 

li 

illl 

ill 

ili 

111 

illl 

ill 

11: 

ill 

lUl 

illi 

illl 

illl 

ill 

ill 

|H! 

« 

Hi 

iHl 












: Sm' 


mm 

mm 


Mm 

lUi 

»&:: 


wm 

mm. 


mm 

lii 

W$M 


lllil 

mm 


mm 

£&& 

Mij: 

ill 


iiii 


wm 

mm 

T-tat' 

mm 

mm 



mm 

mm 


mm 

mm 

lllil 


mm 


ilii 

Wm 

mm 

SM 


mm 



Alternate ERA 


Thailand 14 September 2537 

{Buddhist ERA 543 
80} | 

llllll 

Heisei 6 September 

Taiwan (Emperor AklhNo 

1S89) 


Numbera Around The World i 


Number Formate I 







MH of 


IMIMgiMMH 





-fof ttsmbm- 

Decimal Convention 

Miliilglll 

Example 

- Psfetffhfeste* XJQ: 

Hyphen-xx 

Period 

: 1? ,456,54 

Illllliliil 

H^3b$»XX- 

Comma 

17,456,54 

5,785 . 

*&q£fara Brackets- {XX5 

ffotthfein# Of mOO*^ MStom fe JiOtofecf fey -oOiittfty few 

French . 

17 456 r 54 

0,783 

12&i54 im*&dQW3 tol&MS 

White 1-23,4Sr roymfe up to 1 2&M- 

j| ' . 

17*456,54 

0,783 

Swrfssrlan^ 

12337$ t««fKls:to V£M 

123J375 Kttifid&tQ t235 

123J32S EO«ffds.lQ 32 35 

125325 tOuMSr to 3230 


Currency Symbols Position of Curroooy Symbols i 


m Mar 

!^p!|p||!ll!l!llllll?l 



Stitssfr Powiet 


| American Dollars : 

ini^iiiii 

iliftiiii!! iiiiii 

■■■■■■ 

• German Itfarks 

DM12> 130,25 

Gsffnan Mark 

lillllMIMilllll 

Greek Drachmas 

1— 

• ■ ■ 3 liii 

ilpiilllllillili 

French Francs 

12 130,25 F . 

UfuguayaH Nuevo P«so 


Portuguese Escudos 

12,130$25 ESC 

P’qrtMgw?** Escudo 

pe? 












Space Required far Monetary Value 



IIIBili!!!!!! 

CsBE?ad3ssi Dcffer 

:illl|i| 


zmjmgQ 

&#©an Fes© :i: 


mtm Uta 

IBiPIlllliii 

Egyptian Found • : 

mi 


AdcStforsa! Country Info ARI% 

► FrfQueryPrGfBelnt 

► PrfQueryPrelileStrlnq 

- PM Country Info 
-Held In OS2.INI file 

- Similar info returned by 
DosQueryCtrylnf© 


Country Dependent Formatting Info: 

► oo*a«wyctfy&rfo 

* Returns info from COOMTBY,S¥$ 

- Cotaflry Code 

- Sate tornsat 0 /SM/DO/YY, 

- cvrrefwyKMSwtfi# 

~ Thousartos Senator 

- Cede Separator 
-Time Separator 

* Cuereito? Formas into 

- Time Format 

- Bata list Separator 


Entry Penele 

New Employee Personal Data 

mmm 

Employee Name 

First Name;_ 

Last Name: ...,,;..... 

Salary per monti & , 


Telephone Number 






Structuring Culture Specific Services 


Different Sorts for dherent Countries: 


► Sorting 

► Searching 

mmm 

► Cornering 

iliiHlil 

► Rounding f j 

► folding | 


11**111!!! 

a b 

■■■■ 

Iglllll^^illl 

!Il!«l»III!!»i 

IlilBIllllH 

lilllliiili* 

ill lil llllii i iiii 
111111 | 

■MMi 


things to Consider When Sorting 

Entity of A3pfrab$$c -O^^racters 

= A= A 

4- “3 «£ <Z < “ &“ & 

||||||ji§£i||i^^ 

&<&<$<$<% 

A^^B<U>0<c 


Sorting 


ja&ife ••:::;: 

&mmmn 

afcBdWrt.. '• 

msm 

W&Mmim 

At*- 

-Add 


$pectet 0tw@c&rs 


•AAfiSWOL^J 






Sorting Baaed on Characters Binary 

Value 


Sorting Baaed on ^chooaolng 





SSSS 

wmwm 

<tbte 


XxJr^xcat&oriKcj:;:^ 

: : A6kkiBi : : ; : : : : :v: ; : : : ; : : :: : : : : 

< : : : : : : : : : : : : : :itt«sa : : : : : : : : : : : : : : : : : 





ft>ESEty 

Aardvate 


AardwotT 


AMo 

am 

:• : Alfcx5« 

A&m- ■ -. 

. • AFfr* " • 


Adfve 

BODY 


m • . 




Acdva ‘ "’ : ::: 





ACTION : 

AMMM. 

' hczm 


m mm 




aoosr 




y&3&.'&&£:£ 

imm&m 

*am 

?Sfea»S^x 

:-Aar<fwarfe:-:-: : : ; : : : 

Arfioa. * . 

iSww: : : : : : : : : : : : : : : : 

sm .:• * 
$opy. 

Bb<tf 

/saardyarfcrx^x 



mmmmmm 



wrnmmmm. 

mrovark: 


A&fJDVA m 

-aattfraric 


ghfoym ’ 

A«h$k«& 




pfoctBsshyyrtjroh 


*•' MftPWW : 

a&haboiio char ader-a of 

^m^rnm^mm 

..; /fefe ! 

0^08$$ 2ro 

body 

- Y: : • 

’ hycharactfi^ct 

3 <Aw 

miB . 

' •;; :4&#hW BfcSSv". / • : 

mmMmmmmz. 

SirfWTf ' : 





AcilOft : 

ACftHDN 


wmmuwm 

«c*rart 



&stk?rt 



mm 


jteflwo 

: *£&&■ 


adit ' •• 




• • • 



wW • 


mrn^Mmmm 



m&tipmmmm- 

B£X>Y 


mrnmwim m 

• ®3dy 


:j;! Examples of Language Sensitive 

Functions 

► Groaps of tetter* Treated as a Single tetter 
(Sp&ftiahjl 

- If of llama treated a* a tmique tetter betweer* I 
and »t 

- ch of ©bfe©treated asa unique tetter between « 

|lllllf|fg^ 

► Single letters Treated as Several Letters {CtermanJ 

- Bis treated as "SS" 

- els equivalent te"<**“ 


Folt^ng of Characters 


Pahang m the process in which phatabte er dispisyaPte 
characters are substituted far these characters feat cannatj 
be displayed or printed err a set acted device 

i F 'te'* te folded to V and 4 ’&” is folded to “a* 

cate (measured) 

cate (coast} • aii fabric c«te (quote} 

cdte {side) 


Un palteier essassteS = An assassinated peflcemsrf 
Un peiteter assassins » A paliaarasB assassinates 










M Cnxrmt Fsw-ess C-ode ||j|jj§ 

- Ma.a^ $y$tesa £*t*d£Fa§e 
■* S5#E?a Code f*sg$ f$ ypwfBed) 

;i IfosS^lFrwe^Cp 
w Sifefc Fritter Cfede Fag£ 












WmKKtKBSKSKm 

► teptacs Functions 

!l|l;^!l^||^|^^^!j|!|;lll|j!!!!j|!j!ll!ll!llll 

* QpsSeiC 

► Window Management Functions 

■■gPHHIii 

- WinSetCp 

- WinCpT ranslateString 


Code Page Summitry 2 of$ 


Country 

1 Oourtfry &><$& 


Hungary 

tm 


krafctttd 

.354 *...* 

858 t 861 

^lillllllllllll 

lilliiiiilll 

: 

Japan 

mt 

93£,4£7,850 y £42 

Korea 

lilliiiiilll 


Latin itmerfea 

llillilliiil 

llllMSillliilli 


«ai ! • 

850,437 

Norway 

047 

830 

Poland 

liililllllil 

llliiiliiiPlilll 

Portugal : / 

!l!i!l«li!I 

36iG,8$0 

Rapubiioof Cldm 

lllPillilll! 

030,437,850.348 

Cibydkia IlfjMIllll 

lilliiiiiiil 

S5&850 


93X iaftd 94X Oftfy supported by OBCS OS/2 versions: 


Code Fage Summitry t of $ 

G&urriry - Ccuo^Gode Supported Ccsfe P^$ss 


AraMc Spacing 

783- ' 



09* ,: 

437,850 

Aost-atfe ’ . § II 

liilllii 

437,850 

Beigatm 

iiiiiiii 

358,437 

Brazil 

llilill! 

m437‘ 

Canada* French 

iiiiiiii 

•wuwsfr 

Oaeeftftepubio 

iiiiiiii 

852,850 

Cenmark 

•045- 

850 • . 

Finland . 

358 

ililiiiiiiiii 

liiilllllMgMll 

ill 11 

«iiiillillli 

Germany 

liHiilil 

iiiiliiiliii 

Hebrew Speaking 

llilill 



Code Page Summitry 3 of 3 

Country • Country Code Code Pages Supported: 


Spate 034 850*437 

Sweden 046 850*437 

Switzerland • 041 850,437 

Turkey 090 857,850 

United Kingdom 044 850*437 

United States 001 437*850 

Former Yugoslavia 038 852,850 



| WmUpp&tGhm 

► ^nCcHtnpareSifiiifs 

► WlnNextChar 

► Wi nSttfostitu teStrlngs 


lliill|||ple$^g^ &if *j J|l§| 

DostSfetMessage 

Based on message number and lie name 
|§ Files created by SSK&ISOSF Utility 
- Re toms length of message 


► MIS • Machine Readable Information 

~ Message text* dialog panels, icons etc. 
*■ Separation versos Isolation 

~ n iil 

*• Bun-Hat® binding 

► Mfti in country directories 

► PH - Program Integrated Information 
* Help Flies 

~ On-line Documentation 


Meted IVte^saQ^ APIte 

<► Do^rt^^s^#;'|||||f|l|||I||^llilillllll 


► DosPutMessage 
«► DosOuerylessage^i 









HIBIIIBI 


- Nations] Lancpscfa Dependent 
Fim^one 

► tsafate ssFttssfcfve rmi&ifies 

* Msat Mtmtem i& isolate? 

B®^!!!!ilR!l!B!IR®!!!!!!l!!IP 

lliil^lllllllllllll®iiiPllillilllllli®ll 

~ Csarrency Formats 
w£ajgn<tar 

- Fy&scteS&m 

- feswossfng 

- ReymStop 

- FaMtog 

4+ teg* mmernfam 
~ $k$gbs?s m& ftteasysss 
wSenlem^S$»c^ajs<JPync<uatloti 
w $tatft&mitfj£a3 Formats 


■illiillliil 

► Configuring OS/2 

► Command Line 


_ CSCSAPI 

DosQuery D BCSEnv 
- Based on Country and Code Page 
Returns DECS Environment vector 

• Tafcla containing pairs of ranged 

of first byte of a DBCS character 

~ Japan mm S0,K3,0# 


■Hi 



* COUNTRY 
► oevittfo 

- Specifies screw device and video font 
taws 

- Specifies keyboard layout 10 







Command .line 


$$$ and lifer 


► CHOP 

- Q«@rf or Set Cede Ptgt 

- Choose #0(11 Primary and 
Secondary Configured 

* KEYS 

- Query or Set Keyboard layout 

- Choose a country 


► How 

- Developer Ccmo&ctfen 

► XPS /4 

► Later 

~ ULS Support 

• * APJ% ter prooessiriQ oi Ontecste data; 

> Support tor teonv traootormatiwis 












The Integrated Desktop: 
Programming to the Workplace 
Shell 

Cathryn M. Bloomfield 
Sheila A. Harnett, Ph.D. 

IBM Boca Raton 


Ways to Program to the Workplace Shell 

► To create a customized desktop configuration 

► To integrate your stand-alone application into the 

data-centric user interaction model 

- data files on desktop can automatically associate 
to, and launch your .EXE 

* To implement your application as part of WPSH 

- Add new classes t© represent the behavioral 
aspects of your application (templates, new 
settings, unique context menus, special object 
and container views, etc) 

► To modify the behavior of existing WPSH classes 

- class replacement 


Special Notices 

> The following terms, used in this publication, are trademarks of the IBM 
Corporation in the United States and/or other countries: 

- IBM 

- OS/2 

- Win-OS/2 

- C Set++ 

- Presentation Manager 

- Workplace Shell 

- System Object Model 


(c) Copyright IBM Corporation, 1994. 


Why Program to the Workplace Shell? 

► Inherit functionality 

- drag/drop 

- context menus 

- settings notebooks 

► User can interact with your application WPSH 

► CUA, Graphical interface for free 

► You write less code 


Pre-requisiles for WPSH Programming 

► PM programming concepts 

- Dialogs, controls, containers, window 
procedures, etc 

► Object-Oriented concepts 

- Classes, methods, etc 

- SOM development cycle 

► WPSH-specific issues 

- Implementation conventions 

- Method categories and usage 


Base Classes 

T^Hii^sforage'medl'umldrlhstahces'bf. 

descendant object classes 

► Save/Restore object state data to/from 
persistent form 

► Provide unique handles for each and every 
object that is stored 

► Support a Find behavior that allows previously 
stored objects to be located 

» Where do the 3 Base WPSH classes store their 
objects' persistent data? 

WPFileSystem: WPAbstract: WPTransient: 

EAs INI file not saved 



SOM Object 

I 

WPObject 


WPFiteSystem 

_ WPDataFile 
1— WPBitmap 
— WPIcon 

- WPMet 

— WP Program File 

L- WPCommandFile 

- WPPif 

— WPPointer 

WP Folder 
— WP Desktop 
_ WP Drives 
— WPStartup 
WPTemplates 


WPAbstract 

— WPShredder 

- WPDisk 

— WP Program 
— WPShadow 

- WPCIock 

- WPCountry 
— WP Keyboard 
— WPMouse 

— WP Palette 

— WPColorPalette 
— WPFontPalette 
WPSchemePalette 
— WP Power 
— WPSound 
— WPSpecialNeeds 
— WPSystem 


WPT ra ns lent 


Extended Attributes 

► Applications can add new EAs, but must 
preserve existing EAs 

► 64K limit on each fife/directory's EAs imposed 
by file system 

► WPSH uses the following EAs: 

.CLASSINFO .ASSOCTABLE 

.LONGNAME .SUBJECT 

.ICONPOS .COMMENTS 

•ICON .KEYPHRASES 

.TYPE .HISTORY 





Inputs: mouse clicks, key strokes, etc 


Outputs: visual feedback on screen 


Prsssntatioh Manager 


r;:; [:::j : • 

WC-COMTAINER, W0f4ff?ECORDCOREs 1 


PM messages [ User-dMned::Cofttalner:Vi0WS j pm messages 


WPSH r s Dialog and Window | 

-ProceddFeS- • •• : : < : i . J 


WPSH'^C&rtf ainsr Owner 
Subclass Procedure^ . : 

». r ' 


rv.« * Method invocations oaa 

PM messages * « PM messages 


wpsh&som .] 

Runtimes • '• j 

~ i l , t + ... 

i::i: : DdS:calia: : : H*-►< PMSHAPI " 


SOM Class Development 



WPSH Implementation Conventions 
Use Items 

Dormant vs. Awake object states 
Handles and OBJECTIDs 
instance Data and Class Data 
initialization/uninitialization 
Method categories for behavior control 

















Object Sn-Use List 



► LINK one for each awakened shadow of the object. 

► RECORD one for every container into which the object is 

inserted. This enables an object to refresh its 
appearance In all containers at once. 

► MEMORY one for each block of memory allocated via 

wpAIIocMem. Enables WPSH to garbage collect 
when object Is freed. 

► OPENVIEW one for each open view of the object. 

Each is a USEITEM structure followed by type-specific structure 



► A WPSH object can exist in two states: 

- DORMANT: persistent form of object when It is 
stored away on disk 

- AWAKENED: object is instantiated as a SOM 
object that can have methods invoked upon it 


Object Life Cycle 



Writing a WPSH Subclass 

► Map problem domain to behavior of existing 
WPSH class 

► Create subclass, providing overrides for 
mandatory WPSH behaviors 

► Override or create new additional methods to 
provide desired behavior 

► SOMInitModule or JDLLJnitTerm for your .DLL 

► Register your class 

► Create instance of class 

► Test and iterate 











Provide Defaults for Mandatory Behaviors 


► wpcIsQueryinstanceFiiter 

► wpcisQuerylnstanceType 

► wpcisQueryTitle 

► wpcisQueryDefaultHelp 

► wpcisQuerylconData 


(WPDataFiie) 

(WPDataFile) 

(WPObJect) 

(WPObJect) 

(WPObJect) 


Settings Notebook Customization 

► creating ana adding your own semngs pages: 

► for each new page, write a DlgProc and create a 
_AddXXXXXPage method that calls 
_wplnsertSettingsPage with its own PAGEINFO 

► override _wpAddSettingsPages: 

if (parent_wpAddSettingsPages(s©rraSeIf, bwndNotebook) 
&&_AddlV!yN©wPag©1( somSeBf, fowr^d Notebook) 

&& _AddMyN©wPag©2(somS©lf, hwmdNotebook)) 

{ 

return TRUE ; 

} 

©Is© 

{ /* Bmsert failed */ 

return FALSE; 

} 


Settings Notebook Customization (cont'd) 

► override _wpcIsQuerySetti ngs PageSize if 
your pages are larger than the default 
notebook size 

► To remove any existing pages: 

- override chosen settings page method 

(_wpAddObjectGeneralPage, _wpAddObjectWindowPage, 
_wpAddFile1 Page, _wpAddFile2Page, _wpAddFile3Page, 
_wpAddFileMenuPage, _wpAddFileTypePage,...) 

- and simply return 

S£TTINGS_PAGE_R£MOVED 

- don’t call parent 


Context Menu Customization 
TTSTOTMi°OTirawr0Wf1TOF!!!WPFfTOrPtjpopiTOf!By 

return{ parent_wpFilterPopupMenu(.) & ~ CTXT_xxxx) 

- NOTE: Sometimes, what you really mean is to change the 
object's style instead 

► To add your own items, override 
_wpModifyPopupMenu: 

call _wplnsertPopupMenultems for each new item, and 
then call parent 

► For new menu items, override 
wpMenultemSelected and 
wpMenultemHeipSelected 












Saving/Restoring the State of Your Objects 


Customizing Setup String Processing 


override _wpSaveState to save instance data 
that you want to persist 

► define unique IDKEYs for each piece of 
instance data and calf appropriate 
_wpSaveLon g/Strin g/Daia method 

override _wpRestoreState to restore your data 

► calf appropriate _wpRestoreLong/String/Data 
method with each IDKEY for each stored 
value 

calf parent in both cases 


► To add your own "remote-control ability," 
override the_wpSetup method: 

- Create your own key^value pairs, using 
_wpScanSetu pStri ng to parse 

- call parent 

► _wpSetup is triggered by WinSetObjeclData and 
SysSetObjectData APIs 

► _wpS@tup is also called by_wpc!sNew, when an 
object is first instantiated 

► Differentiate between being called at object 
creation time vs. a direct call to _wpSetup 


Adding Your own Details to your Class 

wpclsQueryDetailslnfo(PCLASSFiELDiNFO *ppCFi, 

PULONG pcb) 

► returns chain of CLASSFSELD1NF© structures, representing 
the type, length and offset of each details field 

► call parent, and add your CLASSFIELDSNFO at end of chain 
* return sum of your and your parent’s columns 

► use wpcIsSnitData to initialize your CLASSRELDIMFO once 
wpQueryDetailsData(PVOID ‘ppDetailsData, PULONG pcb) 

typedef struct _SAMPLE_DETAILJDATA 
{ 

UlONG uIDafaVaiue; 

PSZ pszName; 

} SAM PL E_D ET Al L_D ATA; 

Set your details data and increment the pointer end of your data block: 

((PBYTE) (*ppDetailsData)) += sizeof(SAMPLE_DETAIL_DATA); 


Customizing Print Behavior 

► Override the_wpPrintObject method 

- invoked from context menu, and when object 
dropped on Printer 

► wpPrintObject starts a new thread to handle 
printing, the thread chooses an appropriate 
print method based on the type of the file 

► _wpPrintPiainTextFile 

► _wpPrintMetaFile 

► _wpPrintPifFile 

► _wpPrintPrinterSpecificFile 

► Make sure objects of your class have their 
TYPE set correctly (don't forget your templates) 






asaaiFKani 


drag item information 

type del struct _DRAGUEfW f* 


drag item 7 


HWND hwndltem; P 

ULONG ulltemID; P 

HSTR hstrType; P 

HSTR hstrRMF; f 

HSTR hstrContainerName; P 

HSTR hstrSourceName; P 

HSTR hstrTargetName; P 

SHORT cxOffset; P 

r 

SHORT cy Off set; f 

I* 

USHORT fsControl; f 

USHORT fsSupportedOps; / 
} DRAGITEM; 

typedef DRAGITEM *PDRAGITEM; 


conversation partner 7 
identifies item being dragged 7 
type of item 7 

rendering mechanism and format*/ 
name of source container 7 
name of item at source 7 
suggested name of item at dest 7 
x offset of the origin of the 7 
image from the mouse hotspot 7 
y offset of the origin of the 7 
image from the mouse hotspot 7 
source item control flags 7 
' ops supported by source 7 


Direct Manipulation (cont’d) 

► Sequence of interactions: 

Method: Invoked On: 

_wpFormatDragltem source 

_wpDragOver target 

_wpDrop target 

If source rendering is necessary, target initiates 

_wpRender source 

_wpRenderCompl@t@ target 

_wpEndConversation source 


Drag/Drop Customization 


override _wpDrop to perform special 
processing on items being dropped 
override _wpDragOver to let target accept or 
refuse drop 

typedef struct J3RAGSNFO P* draginfo 7 
{ 

ULONG cbDraginfo; /* Size of DRAGINFO and DRAGiTEMs 7 


USHORT cbDragitem; /* size of DRAGITEM 7 

USHORT usOperation; p current drag operation 7 

HWND hwndSource; /* window handle of source 7 

SHORT xDrop; P* x coordinate of drop position 7 

SHORT yDrop; /* y coordinate of drop position 7 

USHORT cditem; f* count of DRAGITEMs 7 

USHORT usReserved; /* reserved for future use 7 

} DRAGINFO; 


typedef DRAGINFO *PDRAGINFO; 


Drops on Printer Objects 

<DRP_OBJECT,DRF_OBJECT> 

► results in wpPrintObject being called 

<DRM_OS2FSLE,DRF_UNKNOWN> 

► results in wpPrintObject being called, unless 
source rendering specified 

<DRM_PRINT,DRF_UNKNOWN> 

► a DM_PRINTOBJECT message will be sent to 
pDragltem->hwnd!tem, you should print your 
object on the specified printer 

* a DMJENDCONVERSATION will be sent to 
pDragltem->hwndStem as well 








More on Direct Manipulation 


Association and File Type Customization 


► For drops on Shredder: 

- <DRM_D!SCARD s DRF_UNKNOWN> 

► a DM_DISCARDOBJECT will be sent to 
pDragltem->hwndltem, you should delete 
your object, and close your views 

► a DMJENDC0NVERSATION will be sent to 
pDrag!tem->hwndltem as well 

► Sn general, if you want the WPSH to handle your 
object, use 

- <DRM_OBJECT, DRF_OBJECT> 


► Create a WPDataFile subclass for files on which 
your application operates: 

- Define a file type that your application 
understands (e.g. Spreadsheet) 

► override _wpclsQuerylnstanceType 

- Define a file name filter that your application 
deals with (e.g. *.SPD) 

> override __wpclsQuery!nstanceFilter 

- Give your application's .EXE an 
.ASSOCTABLE EA with entries for your file 
types and filters that you want to pick up your 
association 


Managing Your Class's Templates 

► To control the creation of templates for your 
class: 

- override _wpdsCreateDefauItTemplates 

- create your templates in your own folder 
► give your templates OBJECTSDs so your 

de-instali program can remove them easily 

- You may want to use 
CLSSTYLE_NEVERTEMPLATE during 
development 

- Make sure you set your .TYPE EA on your 
templates 


Creating Your own Views 

► if you add your own views, make your view 
menu item id is the same as your view's id, so 
the checkmark on the dropdown open submenu 
will be correct 

► Override _wpOpen, recognize your special 
OPENLxxxx flag 

► Make sure you call _wpRegisterView 




Use of container control (cont'd) 


WPSH and the Container Control 


► CUA container control is the primary way of 
interacting with Workplace Shell objects 
s- All objects with which the user interacts are 
simply records that have been inserted into a 
contsinsr control 

s* Any workplace object can be inserted into any 
container control created on the Workplace 
process using the wpCnrlnsertObject method 


► Only one M1NIRECORDCORE per object is used, 
even if the object exists in multiple views 

► Since we subclass the container control's 
owner, you can only have ONE container 
control into which you src insorting objocts por 
owner= This means you may have to expand 
your window hierarchy. 


WPSH Container Owner Subclass Proc 


► When an object is inserted into a container via 
_wpCnrlnsertObject, we subclass the owner of 
the container 

- provides support that maps container records 
to their WPObject counterparts, and related 
behaviors (context menus, drag/drop support) 

► When a view is registered, we subclass the 
frame 

- adds the viewed object's context menu to the 
system menu of the view 

► assumes that FID_CLIENT is a container and 
that the container's owner is a frame window 


Categories of Method Support 

► Object Allocation and Initialization 

► Use Item Management 

► Object Information - Setting and Querying 
View Management 

► Container Interaction 

► Drag/Drop Manipulation 

► Settings Notebooks 

► Context Menus 

► Class Default Values 

► Class Details - Find/Sort/Include/DetaiSs View 









Method Categories for WPObjects 


Method Categories (cont'd) 


► Save/Restore > 

- wpSawelm mediate 

- wpSaveDeferred 

- wpSave/RestoreState 

- wpSave/RestoreLong 

- wpSave/RestoreString 

- wpSave/RestoreData 

► Settings Notebooks ► 

- wpAddObjectGeneralPage 

- wpAddSettingsPages 

- wpinsertSettingsPage 


Context Menus 

- wpModifyPopupMenu 

- wplnsertPopupMenuItem 

- wpFiSterPopupMenu 

- wpMenuStemSelected 

- wpMenuStemHeipSelected 

Memory Management 

- wpASioeMem 

- wpFreeMem 


► Object Useltems 

- wpAddToObjUseList 

- wpB@let@From0bjUs@LJst 

- wpFIndUseltem 

► Set/Query Object 
Information 

- wpSet/QueryDefaultHeSp 

- wpSet/Queryicon 

- wpSet/QuerySconData 

- wpSet/QueryStyle 

- wpSet/QueryTitle 


► View Management 

- wpVsewObject 

- wpOpen 

- wpCIose 

- wpRegisterView 

- wpSwitchTo 

- wpdsQueryDefauitView 


Method Categories (cont'd) 


Method Categories (cont'd) 


► Setup/Cleanup 

- wpFree 

- wpSnitData 

- wpSetup 

- wpScanSetupString 

- wpSnitData/UnintOata 

- wpcisNew 

- wpcisInitData/UnmitData 


► Direct Manipulation 

- wpFormatDragltem 

- wpRender 

- wpRenderCompiete 

- wpDragOver 
~ wpDrop 

- wpEndConversation 

- wpDraggedOverObject 

- wpDroppedOnObject 


► Details Data Managment 

- wpdsQueryDetaiisInfo 

- wpQueryDetaiSsData 


► Base Class Find Support 

- wpdsFindObjectFirst 

- wpdsFindObjectNext 

- wpcSsFindObjectEnd 


► Some Class Methods 

- wpclsQueryStyle 

- wpcSsQueryScon 

- wpcisQuerylconData 

- wpcisQueryDefauItHelp 

- wpclsQueryTitle 

- wpcisQueryObject 

- wpdsQueryFolder 



WPSH Programming Problem Areas 


Workplace Future Directions 


► Being addressed in future release of product 

- Documentation 

- Inaccessibility to objects' settings 

- Lack of functionality in current APS 

- ModelWiew separation for WPObjects 

- Inter-process operability 

- PM/WPSH programming support 


► User interface usability enhancements 

► Access to Workplace objects from other 
processes 

► More setup strings support 

► Additional classes, methods, and APIs 

► Better 'remote control' capabilities 

► Portable Abstracts 

► Workplace Shell on other platforms 

► CORBA SDL class specifications 


References 


> OS/2 Version 2 Technical Compendium 

> OS/2 Presentation Manager Programming Ref, Voi II 

» OS/2 Developer Magazine 

» Client/Server Programming with OS/22.1, 3rd Ed., Orfali 
and Harkey 

*- ISBN 0-442-01522-4 - OS/2 2.X Notebook, the best of 
OS/2 Developer Magazine 

- ISBN 0-672-30240-3 - OS/2 2.1 Unleashed, Moskowitz and 
Kerr, et. a!., Chapter 5, "Workplace Shell Objects" 

► Primer for the OS/2 Workplace Shell Programmer, IBM 
Technical Report TR 29.1829, Dan Kehn 

► Track-A-Snack: A Workplace Shell Programming 
Example, IBM Technical Report TR 29.1820, Robert A. 
Stanger, Greg Melahn and L. Judy Oakley 


Appendix A: Sample Application 

» MYFILE and MYFOLDER classes 

► MYFILE: 

- adds class details, unique open view, only 
droppable on MYFOLDER, adds settings page, 
modifies context menu 

» MYFOLDER: 

- manipulates Use Stems, manages view 
handles, performs cleanup prior to first 
opening, defaults to details view, allows 
concurrent views, accepts drops of MYFILE 
objects 





Create an Install/Deinstall program 

► Sn the object-oriented world of Workplace Shell, 
the user should not need to see the application 
or a reference to it: create a template of the 
associated class instead 

► Issue WinRegisterQbjectCSass to register the 
associated class with the system 

► Use WinCreateObject instead of the PrfXXX apis 
that were used to create program groups in 
previous releases 


Kernel Debugging 

► Using a function prefix for your object class 
simplifies debugging, since every method in 
your class will have that prefix and will NOT be 
static 

► Use kernel debug command VSF * to catch 
traps 


Appendix B: Debugging Tips for the WPSH 

► Kernel Debugger 

- need debug OS2KNRL and =SYM files from 
Toolkit 

- create your own „SYM files with MAPSYM 

► SPMD 

- SET RUNWORKPLACE=c:\os2\CMD.EXE, then 
to start shell: IPMDPMSHELL.EXE 

- break on the loading of your DLL 

► somPrintf, PMPRINTF 

► message boxes 

► offload your application code from WPSH 
process 


Run-time Representation 

I aSS, 

/object 





Useful CONFIG.SYS Settings 


Appendix C: Threads in the Workplace Shell 


* PROTSHELL= statement in the file CONFIG.SYS 
allows a different PM program to be specified as 
the shell process 

* SET RESTARTOBJECTS=NO statement 
prevents objects from being reopened on boot 

► SET SHELLEXCEPTIONHANDLER=OFF will 
disable the WPSH trap handler 


► Off-load I/O intensive operations to a separate 
thread 

► Since some methods require a message queue, 
your threads should have one: 

DosSetExceptionHandSer 

Winlnitiaiize 

WinCreateMsgQyeye 
WinCancelShutdown 
..... your processing .... 
WinDestroyifyiessageQueue 
WinTerminate 
DosUnsetException Handier 


Multiple Processes and Multiple Threads 

► Shelf Process 

- Application Starter Thread 

- Shutdown Thread 

► Workplace Process 

- Object Thread 

- Lazy Writer Thread 

- Sleepy Time Thread 

- File System Notification Threads 

- Threads that come and go: 

► Populate, Asynchronous refresh, Closing 
Folders, Handling Copy/Move tasks, 
Printing, Finding 


Appendix D: WPSH-related Win APIs 


► WinCreateObject 

► WinQyeryObject 

► WanDestroyObject 

► WanSetObjectData 

► WinRegisterObjectCSass 

► WinDeregisterObjectCiass 

► WimRepIaceObjectCSass 

► WinEnymObjectCiasses 

► WinStoreWmdowPos 

► WirsRestoreWindowPos 

► WinLoadFiieicon 
^ WimSetFileicon 

► WsnFreelcon 

► WinShulldownSystem 





Files MYFILEo- 03/22/94 14;26 


This file was generated by the SOM Compiler, 
Generated using; 

SOM incremental update: 2.7 


Module Name: MYFILE.C 

OS/2 Work Place Shell Sample Program 

Copyright (C) 1994 IBM Corporation 

DISCLAIMER OF WARRANTIES. The following [enclosed] code is 
sample code created by IBM Corporation. This sample code is not 
part of any standard or IBM product and is provided to you solely 
for the purpose of assisting you in the development of your 
applications. The code is provided "AS IS", without 
warranty of any kind. IBM shall not be liable for any damages 
arising out of your use of the sample code, even if they have been 
advised of the possibility of such damages. 

Entry Points: 

Class Methods: 

myfM_clsQueryModuleHandle 

myfM_clsQueryDefaultFileText 

Overridden Class Methods: 

my fM_wpc1sInitData 
myfM_wpclsQueryDefaultHelp 
my fM_wpc1sQueryDefau11Vi ew 
myfM wpclsQueryDetailsInfo 
myfM wpclsQuerylconData 
myfM_wpclsQueryInstanceFilter 
my fM_wpc1sQu eryS ty1e 
my fM_wpc1sQuer yT i11e 
myfM_wpclsUnInitData 

Instance Methods: 

myf _AddLastWorkerPage 
rayf soundAlarm 
myf_queryLastWorker 
nryf_setLastWorker 

Overridden Instance Methods: 


myf_wpAddSettingsPages 
myf wpFilterPopupMenu 
myf_wpInitData 
myf wpMenuItemHelpSelected 
nry f _wpMenu 11 emSe lec t ed 
myf wpModifyPopupMenu 
myf wpOpen 

myf_wpQueryDetailsData 
myf wpRestoreState 
myf wpSaveState 
rayf_wpUnInitData 
myf wpForraatDragltem 
myf wpSetup 


Printed on 08/01/94 at 17:02 


Page 1 




Files MYFILE„c 03/22/94 14;26 


Printed on 08/01/94 at 17:02 


Page 2 


}; 


y A A A A 
A A A A A 


A* * * * At A A A * 


AAAAAAAA 


INSTANCE METHODS SECTION *** 


A A A A A A A 
A A A A A 


***** Do not put any code in this section unless 

***** it is an object INSTANCE method 

A A A A A 

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 

tfundef SOM_CurrentClass 

#define SOM CurrentClass SOMInstance 


METHOD: queryLaatWorker 
DESCRIPTION: 

Query name of last person to work with myfile 
RETURN: 

PSZ name of last person to work on file 


( ) PRIVATE 
(X) PUBLIC 


*/ 
SOM 
{ 


[_Scope PSZ SOMLINK myf_queryLastWorker(MYFILE *somSelf) 

MYFILEData *somThis = MYFILEGetData(somSelf); 
MYFILEMethodDebug("MYFILE","myf queryLastWorker"); 

return pszLastWorker; 

} /* end rnyf_queryLastWorker */ 


METHOD: setLastWorker 
DESCRIPTION: 

Set name of last person to work with myfile 
RETURN: 


( ) PRIVATE 
(X) PUBLIC 


*/ 

SOM 


TRUE 

FALSE 


Scope BOOL 


Brake Is on 
Brake is off 


SOMLINK rayf_satLastWorker(MYFILE *somSelf, 
PSZ pszWorkerName) 


BOOL rc = FALSE; 

MYFILEData *somThis = MYFILEGetData(somSelf); 

MYFILEMethodDebug("MYFILE","myf setLastWorker"); 

if (pszWorkerName) 

{ 

if (_pszLastWorker) 

{ 

_wpFreeMem(somSelf, (PBYTE) pszLastWorker); 

_pszLastWorker = _wpAllocMem(somSelf, strlen(pszWorkerName)+1, NULL); 
strcpy(_pszLastWorker, pszWorkerName); 
rc = TRUE; 

} 

} 


} / 


return(rc); 

k end myf setLastWorker */ 

METHOD: soundAlarm 
DESCRIPTION: 

Sound an alarm 
RETURN: 


( ) PRIVATE 
(X) PUBLIC 


TRUE 

FALSE 


Successful 

unsuccessful 


*/ 

SOM_ 

{ 


} / 

/* 


Scope BOOL SOMLINK myf soundAlarm(MYFILE *somSelf) 

MYFILEData *soraThis = MYFILEGetData(somSelf); 
MYFILEMethodDebug("MYFILE","myf soundAlarm"); 

DosBeep(100,50); 

DosSleep(100) ; 

DosBeep(100,50) ; 

DosSleep(100); 

DosBeep(100,50); 

DosSleep(100); 

DosBeep(100,50); 

DosSleep(100); 

DosBeep(100,50); 

DosSleep(300) ; 

DosBeep(100, 100); 

DosSleep(100) ; 

DosBeep(100, 100); 

return TRUE; 

* end myf soundAlarm */ 


( ) PRIVATE 
(X) PUBLIC 


METHOD: AddLastWorkerPage 
DESCRIPTION: 

This method adds the Last Worker page to the settings notebook 
RETURN: 


ulPageld 
HOW TO OVERRIDE: 


Unsuccessful 

Identifier for the inserted page 


*/ 

SOM 


Method should always be overridden in order to replace or remove 
the last worker page from an object which is a descendent of myfile. 
In most cases, an override of this method will not call the parent. 


Scope ULONG SOMLINK myf AddLastWorkerPage(MYFILE *somSelf, 
HWND hwndNotebook) 


PAGEINFO pageinfo; 

MYFILEData *somThis = MYFILEGetData(somSelf); 




Files MYFILE.c 03/22/94 14s26 


MYFILEMethodDebug ("MYFILE", "myf AddLastWorkerPage"); 
memset( (PCH)&pageinfo,0,sizeof (PAGEINFO)); 


pageinfo.cb 
pageinfo.hwndPage 
pageinfo.usPageStyleFlags = 
pageinfo.usPagelnsertFlags = 
pageinfo.pfnwp 

pageinfo.resid = 

pageinfo.dlgid = 

pageinfo. pszNarae 
pageinfo.pCreateParams = 

pageinfo.idDefaultHelpPanel = 
pageinfo.pszHelpLibraryName = 

return wpInsertSettingsPage( 

} /* end myf AddLastWorkerPage( 


* OVERRIDE: wpInitData 

* 

* DESCRIPTION: 


sizeof(PAGEINFO); 

NULLHANDLE; 

BKA_MAJOR; 

BKA_FIRST; 

LastWorkerDlgProc; 
hmod; 

IDD_LASTWORKER; 

"LastWorker"; 
somSelf; 

I D_HELP_LASTWORKER; 
szHelpLibrary; 

somSelf, hwndNotebook, fipageinfo ); 
I */ 


( ) PRIVATE 
(X) PUBLIC 


* Initialize our state variables. Allocate any extra memory that 

* we might need. 

* 

*/ 

SOM Scope void SOMLINK myf wpInitData(MYFILE *somSelf) 

{ 

MYFILEData *somThis = MYFILEGetData(somSelf); 

MYFILEMethodDebug("MYFILE","myf_wpInitData"); 

parent wpInitData(somSelf); 

pszLastWorker = (PSZ) wpAllocMem(somSelf, CCHMAXPATH+1, NULL); 
if ( pszLastWorker) 

{ 

strcpy(_pszLastWorker / DEFAULT_LASTWORKER); 

} 


} /* end myf wpInitData() */ 

/* 

* 

* OVERRIDE: wpUnlnitData 

* DESCRIPTION: 


( ) PRIVATE 
(X) PUBLIC 


* Clear up memory that was allocated on wpInitData. 

*/ 

SOM Scope void SOMLINK myf wpUnlnitData(MYFILE *somSelf) 

{ 

MYFILEData *somThis = MYFILEGetData(somSelf); 

MYFILEMethodDebug("MYFILE","myf_wpUnInitData") ; 

if ( pszLastWorker) 

{ 

wpFreeMem(somSelf, (PBYTE)_pszLastWorker); 

> " 

parent wpUnlnitData(somSelf); 

} /* end myf wpUnlnitData() */ 


Printed on 08/01/94 at 17s02 


P< 


/* 

A 

* METHOD: wpSaveState ( ) PRIVATE 

* (X) PUBLIC 

* DESCRIPTION: 

A 

* Save our state variables (pitch and duration). 

A 

*/ 

SOM_Scope BOOL SOMLINK myf_wpSaveState(MYFILE *somSelf) 

{ 

MYFILEData *somThis = MYFILEGetData(somSelf); 

MYFILEMethodDebug("MYFILE","myf_wpSaveState"); 

wpSaveString( somSelf, szMYFILEClassTitle, 

IDKEY_LASTWORKER, _pszLastWorker); 


return (parent_wpSaveState(somSelf)); 


} /* end myf_wpSaveState() */ 


/* 


* METHOD: wpRestoreState 

A 

* DESCRIPTION: 


( ) PRIVATE 
(X) PUBLIC 


Retrieve our saved state variables (pitch and duration). 


V 

SOM Scope BOOL SOMLINK myf wpRestoreState(MYFILE *somSelf, ULONG ulReserved) 

{ 

ULONG cbString; 

MYFILEData *somThis = MYFILEGetData(somSelf); 

MYFILEMethodDebug("MYFILE","myf_wpRestoreState"); 


_wpRestoreString( somSelf, szMYFILEClassTitle, 

IDKEY_LASTWORKER, _pszLastWorker, ScbString )? 

return (parent_wpRestoreState(somSelf,ulReserved)); 

} /* myf_wpRestoreState() */ 

/* 


METHOD: wpAddSettingsPages 
DESCRIPTION: 


( ) PRIVATE 
(X) PUBLIC 


Add our own settings page to let the user alter the pitch 
and duration of the myfile's beep. 


*/ 


SOM Scope BOOL SOMLINK myf wpAddSettingsPages(MYFILE *somSelf, HWND hwndNotebook 
) 

{ 


MYFILEData *somThis = MYFILEGetData(somSelf); 
MYFILEMethodDebug("MYFILE", "myf_wpAddSettingsPages") ; 


if (parent wpAddSettingsPages(somSelf, hwndNotebook) 

&& AddLastWorkerPage(somSelf, hwndNotebook)) 

{ 

return(TRUE); 

} 



Files MYFILE.c 03/22/94 14s26 


else 

{ 

DQbugBox("myf_wpAddSettingsPages", " Failed to add a settings page.*'); 
return( FALSE ); 

> 

} /* myf_wpAddSettingsPages() */ 


/* 

* METHOD: wpFilterPopupMenu 

* DESCRIPTION: 


( ) PRIVATE 
(X) PUBLIC 


* Filter out any options from the context that don*t apply. 

* HOW TO OVERRIDE: 

A 

* No restrictions. 


*/ 

SOM_Scope ULONG SOMLINK myf_wpFilterPopupMenu(MYFILE *somSelf, 

ULONG ulFlags, 

HWND hwndCnr, 

BOOL fMultiSelect) 

{ 

MYFILEData *somThis = MYFILEGetData(somSelf); 

MYFILEMethodDebug("MYFILE", "myf_wpFilterPopupMenu") ; 

/* 

* This method allows you to filter which menus to include in the 

* popup menu. Note: wpclsQueryStyle is overridden to disallow 

* linking (creating shadow) as well. 

V 

return( parentwpFiIterPopupMenu(somSelf,ulFlags,hwndCnr, 
fMultiSelect) & ~CTXT_LINK ); 

} /* end myf_wpFiIterPopupMenu() */ 

/* 


* METHOD: wpModifyPopupMenu 

* DESCRIPTION: 


( ) PRIVATE 
(X) PUBLIC 


* Add our extra option to the context menu to sound an alarm 

V 

SOM Scope BOOL SOMLINK rayf wpModifyPopupMenu(MYFILE *somSelf, 
HWND hwndMenu, 

HWND hwndCnr, 

ULONG iPosition) 

{ 

MYFILEData *somThis = MYFILEGetData(somSelf); 

MYF ILEMethodDebug (''MYFILE ", 1 'myf_wpModifyPopupMenu'') ; 


/* 

* Put in our special "open myfile" submenu item under the "open" 1 menu 
*/ 

_wpInsertPopupMenuIterns( somSelf, hwndMenu, 0, 

hmod, ID_OPENMENU, WPMENUID_OPEN); 

/* 

* insert a "beep horn" menu item at the end of the list. 

*/ 

wpInsertPopupMenuIterns( somSelf, hwndMenu, iPosition, 
hmod, ID_ALARMMENU, 0 ); 


Printed on 08/01/94 at 17:02 


return (parent wpModifyPopupMenu(somSelf,hwndMenu,hwndCnr,iPosition)); 
} /* end myf_wpModifyPopupMenu() */ 


/* 

* 

* METHOD: wpMenuItemSelected 

* 

* DESCRIPTION: 


( ) PRIVATE 
(X) PUBLIC 


* Process input from the extra menu option that we added. 

* 

*/ 

SOM Scope BOOL SOMLINK myf_wpMenuItemSelected(MYFILE *somSelf, 
~~ HWND hwndFrame, 

ULONG Menuld) 

{ 

MYFILEData *somThis = MYFILEGetData(somSelf); 
MYFILEMethodDebug("MYFILE","myf_wpMenuIteraSelected"); 


/* Which of our menu items was selected ? 

*/ 

switch( Menuld ) 

{ 

case IDM_OPENMYFILE: 

/* 

* We could call wpOpen here, but, if the object is already opened, 

* the following API determines whether the object should be 

* resurfaced, or if multiple views are desired. 

*/ 

_wpViewObject(somSelf, NULLHANDLE, OPEN_MYFILE, 0); 
break; 

case IDM_SOUNDALARM: 

soundAlarm(somSelf); 
break; 

default: 

return parent wpMenuItemSelected(somSelf, hwndFrame, Menuld); 
break; 

> 

return TRUE; /* we processed it */ 


} /* end myf wpMenuItemSelected() */ 

/* 


* METHOD: wpMenuItemHelpSelected 

* 

* DESCRIPTION: 


( ) PRIVATE 
(X) PUBLIC 


Process input from the extra menu option that we added. 


SOM Scope BOOL SOMLINK myf wpMenuItemHelpSelected(MYFILE *somSelf, 
ULONG Menuld) 

{ 

MYFILEData *somThis = MYFILEGetData(somSelf); 
MYFILEMethodDebug( "MYFILE", "myf_wpMenuItemHelpSelected"); 


/* Which of our menu items was selected ? 

V 

switch( Menuld ) 

{ 

case IDM SOUNDALARM: 




Pile: MYPILE.c 03/22/94 14226 



Printed on 08/01/94 at 17s02 


Page 5 


*/ 

SQM_Scope HWND SOMLINK myf_wpOpen(MYFILE *somSelf, 

HWND hwndCnr, 

ULONG ulView, 

ULONG param) 

{ 

MYFILEData *somThis = MYFILEGetData(somSelf); 

MYFILEMethodDebug("MYFILE”,"myf_wpOpen"); 

switch (ulView) 

{ 

case OPEN_MYFILE; 

/* 

* Create a basic Frame and Client window for this instance. 
*/ 

return MYFILEInit(somSelf); 
default: 

return parent_wpOpen(somSelf ,hwndCnr,ulView,parara); 

} /* end switch (ulView) */ 

} /* end myf_wpOpen() */ 


/* 

A 

* METHOD: wpSetup 

* 

* DESCRIPTION: 


( ) PRIVATE 
(X) PUBLIC 


Specify Setup strings and do some initialization. This method is 
invoked once an object is completely created. 


* Note: We're overriding this method to write some default data to the 

* object’s real filename. This will give us something to look at 

* if the user drag/drops us on an editor or selects the open/editor 

* view. 

*/ 

SOM Scope BOOL SOMLINK rayf wpSetup(MYFILE *somSelf, 

PSZ pszSetupString) 

{ 

ULONG cbBytesWritten; /* pointer to variable receiving byte count */ 

APIRET rc; 

BOOL fSuccess; 

HFILE hf; /* pointer to variable for file handle */ 

ULONG ulAction; /* pointer to variable for action taken */ 

CHAR szObjectFilename[CCHMAXPATH]; /* buffer for wpQueryRealName() */ 

ULONG cb = sizeof(szObjectFilename); 

PSZ pszDefaultText; 

BOOL rcParentCall; 

CHAR szValue [CCHMAXPATH+1] ; 

ULONG cbBuffer; 


MYFILEData *somThis = MYFILEGetData(somSelf); 

MYFILEMethodDebug(''MYFILE”,”myf_wpSetup”) ; 

/* 

* When the object is created from scratch, put some default 

* text into the file on the hard disk 
*/ 

fSuccess = 

wpQueryRealName( /* query full-pathname of object's file */ 

somSelf, /* pointer to this object */ 



Fils; MYFXLE.c 03/22/94 14s26 


szObjectFi1ename, 
&cb, 

TRUE); 


/* return buffer */ 
/* sizeof buffer */ 
/* request fully qualified pathname? */ 


if (fSuccess) 

{ 

rc = 

DosOpen(szObjectFilenarae, &hf, fiulAction, 

0, /* file size if created or truncated */ 

FILE NORMAL, /* file attribute */ 

FILE_OPEN /* action taken if file exists/does not exist */ 

| FILE_CREATE, 

OPEN ACCESS READWRITE /* open mode of file */ 

|~OPEN_SHARE_DENYNONE, 

NULL); /* pointer to structure for extended attributes */ 

if (rc) 

{ 

CHAR ach[10]; 

_ltoa(rc, ach, 10); 

DebugBox("nryf_wpSetup:DosOpen failed rc =", ach); 

} 

else 

{ 

pszDefaultText = _clsQueryDefaultFileText(_MYFILE); 

DosWrite(hf, pszDefaultText, strlen(pszDefaultText), ficbBytesWritten); 
DosClose(hf); 

} 

} /* end if (fSuccess) */ 

rcParentCall = parent_wpSetup(somSelf,pszSetupString); 
cbBuffer = CCHMAXPATH; 

if ( _wpScanSetupString( somSelf, pszSetupString,"SOUND", 
szValue,&cbBuffer) ) 

{ 

if ((szValue[0] == 'Y') && (szValue[l] == «E') && (szValue[2] == »S')) 

{ 

_soundAlarm(somSelf); 

} 


return rcParentCall; 


} /* end rayf_wpSetup() */ 


/* 

* METHODS wpFormatDragltera 

* 

* DESCRIPTION: 


( ) PRIVATE 
(X) PUBLIC 


* Specify a unique RMF that will only be understood by instances 

* of class MYFOLDER. (see _wpDragOver and _wpDrop overrides in 

* rayfolder.c). 

V 

SOM_Scope BOOL SOMLINK myf_wpFormatDragItem(MYFILE *somSelf, 

PDRAGITEM pdrgltem) 

{ 

/* MYFILEData *somThis = MYFILEGetData(somSelf); */ 

MYFILEMethodDebugC'MYFILE","myf wpFormatDragltem”); 


parent_wpFormatDragItera(somSelf,pdrgltem); 

/* We do NOT want to really let the workplace shell render 


Printed on 08/01/94 at 17s02 


Pi 


6 


age 


* our object, so change the rendering mechanism and format 

* to be uniquely ours. 

*/ 

DrgDeleteStrHandle(pdrgltem->hstrRMF); 

pdrgltem->hstrRMF = DrgAddStrHandle(”<DRM_OUROWNSPECIAL,DRF_OBJECT> u ); 
return TRUE; 

> 


/************************** CLASS METHODS SECTION ************** 
***** 

***** Do not put any code in this section unless 

***** it is an object CLASS method 


****************************************************************** 

#undef SOM CurrentClass 

#define SOM CurrentClass SOMMeta 


********** 


***** 

***** 


***** 
********* j 


/* 

* 

* METHOD: clsQueryModuleHandle 

* DESCRIPTION: 


( ) PRIVATE 
(X) PUBLIC 


* This method returns the module handle of this class. If this is the 

* first invocation, DosQueryModuleHandle is called to save the handle 

* for future invocations. 

* 

* RETURN: 


0 Unsuccessful 

non-zero module handle 


*/ 

SQM_Scope HMODULE SOMLINK myfM clsQueryModuleHandle(M MYFILE *somSelf) 

{ 

APIRET rc; 


/* M_MYFILEData *somThis = M_MYFILEGetData(somSelf); */ 
M_MYFILEMethodDebug( ,, M_MYFILE ,, / ’'myfM^clsQueryModuleHandle”); 

/* 

* Make sure we already have module handle 
*/ 


if (hmod == NULLHANDLE) 

{ 

zString zsPathName; 

/* 

* Retrieve registered pathname of our module (DLL) and query the 

* module handle. 

*/ 


zsPathName = 

somLocateClassFile( SOMClassMgrObject, SOM IdFromString("MYFILE"), 

MYFILE_MajorVersion, MYFILE_MinorV 


ersion); 

rc = 

DosQueryModuleHandle( zsPathName, &hmod); 
if (rc) 


DebugBox("rayfM wpclsInitData", "Failed to load module"); 
return; 


> 




Files MYFILE.c 03/22/94 14s26 


} /* end if (hmod == NULLHANDLE) */ 

return (hmod); 

} /* end myfM clsQueryModuleHandle() */ 



Printed on 08/01/94 at 17;02 


Pi 


* Initalize the class data 
*/ 

SOM Scope void SOMLINK myfM_wpclsInitData(M_MYFILE *somSelf) 

{ 

ULONG rc, i; 

PCLASSFIELDINFO pCFI; 

/* M MYFILEData *somThis = M_MYFILEGetData(somSelf); */ 

M MYFILEMethodDebug( , 'M_MYFILE'\"myfM_wpclsInitData") ; 

/* 

* Call the parent class method first 
*/ 

parent wpclsInitData(somSelf); 

/* 

* Get class title 
*/ 

if (!WinLoadString(WinQueryAnchorBlock(HWNDJDESKTOP), _clsQueryModuleHandle( 
somSelf), IDJTITLE, 

sizeof(szMYFILEClassTitle), szMYFILEClassTitle)) 

/* Load string failed: use the parent's string */ 
strcpy(szMYFILEClassTitle, parent_wpclsQueryTitie(somSelf)); 

/* 

* Initialize everything needed for the CLASSFIELDINFO structures 

* for the MYFILE object class 
*/ 

for (i=0, pCFI=fieldinfo; i < NUM_MYFILE_FIELDS; i++, pCFI++) 

{ 

memset((PCH) pCFI, 0, sizeof(CLASSFIELDINFO)); /* zero's */ 

pCFI->cb = sizeof(CLASSFIELDINFO); 

pCFI->fIData = CFA_RIGHT | CFA_SEPARATOR | CFA_FIREADONLY; 
pCFI->fITitle = CFA_CENTER I CFA_SEPARATOR | CFA_HORZSEPARATOR | 
CFA~STRING | CFA_FITITLEREADONLY; 

pCFI->pNextFieldInfo = pCFI + 1; /* point to next CLASSFIELDINFO */ 

pCFI->pTi11eD at a = (PVOID) apszMYFILEColTitles[i]; 
pCFI->flCompare = COMPARE_SUPPORTED | SORTBY_SUPPORTED; 

switch (i) 

{ 

case INDEX_LASTWORKER: 

pCFI-> flData 
pCFI->offFieldData 

orker)); 

pCFI->ulLenFieldData 
pCFI->DefaultComparison 

break; 

} /* end switch(i) */ 

} /* end for (i=0, pCFI=fieldinfo; i < NUM_MYFILE_FIELDS; i++, pCFI++) */ 

fieldinfo[NUM MYFILE_FIELDS-1].pNextFieldlnfo = NULL;/* terminate linked list 

*/ 

} /* end myfM wpclsInitData() */ 

/* 


= CFA_STRING; 

= (ULONG)(FIELDOFFSET(MYFILEDETAILS,pszLastW 

= sizeof(PSZ); 

= CMP EQUAL; 


METHOD: wpclsUnlnitData 


( ) PRIVATE 



Files MYFILE.c 03/22/94 14s26 


* (X) PUBLIC 

* DESCRIPTION s 

* 

* Free any class data 

ft 

*/ 

SOM_Scope void SOMLINK rayfM wpclsUnInitData(M MYFILE *somSelf) 

{ 

M_MYFILEMethodDebug( "M_MYFILE", "myfM_wpclsUnInitData") ; 
parent_wpclsUnInitData(somSelf); 

> /* end rayfM_wpclsUnInitData() */ 

/* 


* METHOD: wpclsOueryTitle 

* 

* DESCRIPTION: 

* Return the string "New Myfile". 


( ) PRIVATE 
(X) PUBLIC 


*/ 

SOM_Scope PSZ SOMLINK myfM_wpclsQueryTitle(M MYFILE *somSelf) 

{ 

/* M_MYFILEData *soraThis = M_MYFILEGetData(somSelf); */ 
M_MYFILEMethodDebug("M MYFILE","rayfM wpclsQueryTitle"); 


/* 

* Return the class title for a myfile 
*/ 

if (*szMYFILEClassTitle ) 

return( szMYFILEClassTitle ); 
else 

return( parentwpclsQueryTitle(somSelf)); 
} /* end myfM_wpclsQueryTitle() */ 


/* 

* 

* METHOD: wpclsQuerylconDdata 

* DESCRIPTION: 


( ) PRIVATE 
(X) PUBLIC 


* Return the class icon 

* 


*/ 


SOM_Scope ULONG SOMLINK rayfM_wpclsQueryIconData(M MYFILE *somSelf, 
PICONINFO plconlnfo) 


APIRET rc; 

M_MYFILEMethodDebug("M MYFILE" / "myfM wpclsQuerylconData"); 


if (plconlnfo) 

{ 

/* 

* fill in icon information 
*/ 

pIconInfo->fFormat = ICONJRESOURCE; 
pIconInfo->hmod= _clsQueryModuleHandle(somSelf); 
pIconInfo->resid= ID_ICON; 


return (sizeof(ICONINFO)); 


Printed on 08/01/94 at 17s02 


Pi 


8 


/* end myfM_wpclsQueryIconData() */ 


METHOD: wpclsQueryDefaultHelp 


DESCRIPTION: 


( ) PRIVATE 
(X) PUBLIC 


Process input from the extra menu option that we added. 


_Scope BOOL SOMLINK myfM_wpclsQueryDefaultHelp(M_MYFILE *somSelf, 
PULONG pHelpPanelld, 

PSZ pszHelpLibrary) 

M_MYFILEData *somThis = M_MYFILEGetData(somSelf); */ 
M_MYFILEMethodDebug("M MYFILE","myfM wpclsQueryDefaultHelp"); 


if (pHelpPanelld) 

*pHelpPanelId = ID_HELP_DEFAULT; 
if (pszHelpLibrary) 

strcpy(pszHelpLibrary, szHelpLibrary); 


/* set default help panel id */ 


/* copy help filename */ 


return (TRUE); 


/* end myfM_wpclsQueryDefaultHelp() */ 


METHOD: wpclsQueryDefaultView 


DESCRIPTION: 


( ) PRIVATE 
(X) PUBLIC 


Returns the default view for a new instance of this object. 


Tell the system what our default open view is... 


_Scope ULONG SOMLINK myfM_wpclsQueryDefaultView(M MYFILE *somSelf) 

M_MYFILEData *somThis = M_MYFILEGetData(somSelf); */ 
M_MYFILEMethodDebug("M_MYFILE","rayfM_wpclsQueryDefaultView"); 

return OPEN_MYFILE; 

/* end rayfM wpclsQueryDefaultView() */ 


METHOD: wpclsQueryDetailsInfo 


DESCRIPTION: 


( ) PRIVATE 
(X) PUBLIC 


Appends the myfile specific chain of FIELDINFO structures describing the 
details data of this object to *ppClassFieldInfo (if ppClassFieldlnfo 
is NON-NULL). In this case it also sets *ppClassFieldInfo to the 
head of the linked list. 


Adds the number of bytes required by the details data for myfile to *pSize 
(if pSize is NON-NULL). 


* REMARKS: 




Files MYFILEoC 03/22/94 14s26 


* Add details data for this object„ 

A 

*/ 

SOM Scope ULONG SOMLINK myfM wpclsQueryDetailsInfo(M_MYFILE *som3elf, 
PCLASSFIELDINFO *ppClassFieldInfo, 

PULONG pSize) 

{ 

ULONG cParentColumns; 

PCLASSFIELDINFO pCFI; 

ULONG i; 

/* M MYFILEData *soniThis = M_MYFILEGetData(somSelf); */ 

M MYFILEMethodDebug ("M_MYFILE", "myfM_wpclsQueryDetailsInfo"); 

/* 

* Always call the parent method first to retrieve number of details 

* columns and parent's data already defined in details buffer. 


cParentColumns = 

parent wpclsQueryDetailsInfo(somSelf, ppClassFieldlnfo, pSize); 

/* 

* If pSize is non-NULL, we must add the size of our deatils column 

* data structure. 

*/ 

if (pSize) 

*pSize += sizeof(MYFILEDETAILS); /* adjust size 

*/ 

/* 

* If the request was for the chained fieldinfo structures 

* (ppClassFieldlnfo is non-NULL), link them in 

* 

* eventually the chain will look like 

* 

* Grandad - Dad - Me - Kid - Grandkid 

* 

* I will be getting the pointer to the beginning of the chain 

* If the beginning of the chain is 0, I will assign the address 

* of my first CLASSFIELDINFO structure to *ppClassFieldInfo. 

* Otherwise *pp points to the first column description in the 

* chain. We need to walk the chain and link our CLASSFIELDINFO 

* structures at the end. 

*/ 

if (ppClassFieldlnfo) 

{ 

/* 

* Find the last link in the chain; Then link our CLASSFIELDINFO 

* structures to the chain. 

V 

if (^ppClassFieldlnfo) 

{ 

pCFI = ^ppClassFieldlnfo; 
for (i=0;i<cParentColumns;i++) 

pCFI = (pCFI->pNextFieldInfo) ? pCFI->pNextFieldInfo : pCFI; 
pCFI->pNextFieldInfo = fieldinfo; 

> 

else 


ppClassFieldlnfo = fieldinfo; 


Printed on 08/01/94 at 17;02 P i 


) 

return ((ULONG) (cParentColumns + NUM_MYFILE_FIELDS)); 

} /* end myfM_wpclsQueryDetailsInfo() */ 

/* 

A 

* METHOD; wpclsQuerylnstanceFilter ( ) PRIVATE 

* (X) PUBLIC 

* DESCRIPTION; 

* The wpclsQuerylnstanceFilter method is called to allow the class 

* object to specify the file title filters for instances of its 

* class. 

A 

* REMARKS; 

* 

* A pointer to a string containing file title filter(s). This 

* string can contain several file title filters separated by a 

* comma. Example: "*.TXT, *.DOC" 

"k 

* Note: Overriding this method will cause any data file with the extension 

* ".txt" to become a data object of the class "MYFILE." 

V 

SOM Scope PSZ SOMLINK myfM wpclsQuerylnstanceFilter(M_MYFILE *somSelf) 

{ 

/* M_MYFILEData *somThis = M_MYFILEGetData(somSelf); */ 

M MYFILEMethodDebug( , 'M_MYFILE ,, ,"myfM_wpclsQueryInstanceFilter"); 

return (szMYFILEInstanceFilter); 

} 


/aaaaaaaaaaaaaaaaaaaaaaaaaa ORDINARY CODE SECTION *********************** aa aa 

AAAAA A A A A A 

***** Any non-method code should go here. aaaaa 

AAAAA AAAAA 

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA^/ 

#undef SOM CurrentClass 


/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 
A A 

* ROUTINE: MYFILEInit ( ) * 

A A 

* DESCRIPTION: MYFILE Initialization * 

A A 

* RETURNS: Handle of rayfile frame window, NULL if error * 

rt * 

***************************************************************************/ 
HWND MYFILEInit (MYFILE* somSelf) 

{ 

HAB hab; /* PM anchor block handle */ 

HWND hwndFrame = NULLHANDLE; /* Frame window handle */ 

HWND hwndClient = NULLHANDLE; 

PWINDOWDATA pWindowData; 

BOOL fSuccess; 

SWCNTRL swcEntry; /* Switch Entry */ 

FRAMECDATA flFrameCtlData; /* Frame Ctl Data */ 


hab = WinQueryAnchorBlock(HWND_DESKTOP); 

if ( IWinRegisterClass( hab , szMYFILEWindowClass, (PFNWP)MYFILEWndProc , 

CS_SIZEREDRAW | CS_SYNCPAINT, sizeof(pWindowData))) 


{ 


DebugBox("MYFILEInit", "Failure in WinRegisterClass"); 



Piles MYFILE.e 03/22/94 14:26 


return NULLHANDLE ; 

} 

/* 

* Allocate some instance specific data in Window words of Frame window. 

* This will ensure our window procedure can use this object’s methods 

* (our window proc isn't passed a * somSelf pointer). 

*/ 

pWindowData = (PWINDOWDATA) _wpAllocMem(somSelf, sizeof(*pWindowData), NULL) 

if (!pWindowData) 

{ 

DebugBox("MYFILEInit”, "wpAllocMem failed to allocate pWindowData”); 
return NULLHANDLE; 

} 

memset((PVOID) pWindowData, 0, sizeof(*pWindowData)); 

pWindowData->cb = sizeof(*pWindowData); /* first field = size */ 

pWindowData->somSelf = somSelf; 

/* Create a frame window 
*/ 

flFraraeCtlData.cb = sizeof( flFrameCtlData ); 

flFrameCtlData.flCreateFlags = FCF_SIZEBORDER | FCF_TITLEBAR | FCF SYSMENU | 

FCF_MINMAX ; 

flFrameCtlData.hmodResources = hmod; 
flFrameCtlData.idResources = ID ICON; 


hwndFrame - /* create frame window */ 
WinCreateWindow( 

HWND_DESKTOP, /* parent-window handle */ 
WC_FRAME, /* pointer to registered class name */ 
_wpQueryTitle(somSelf), /* pointer to window text */ 
0, /* window style */ 
0, 0, 0, 0, /* position of window */ 
NULLHANDLE, /* owner-window handle */ 
HWND_TOP, /* handle to sibling window */ 
(USHORT) ID_FRAME, /* window identifier */ 
(PVOID) £flFrameCtlData, /* pointer to buffer */ 
NULL); ; /* pointer to structure with pres, params. */ 


if (!hwndFrame) 

{ 

DebugBox(’’MYFILEInit”, ’’Failure in WinCreateWindow”); 
return NULLHANDLE; 

} 

hwndClient = /* use WinCreateWindow so we can pass pres params */ 


WinCreateWindow( 

hwndFrame, /* parent-window handle */ 
szMYFILEWindowClass, /* pointer to registered class name */ 
NULL, /* pointer to window text */ 
0, /* window style */ 
0, 0, 0, 0, /* position of window */ 
hwndFrame, /* owner-window handle */ 
HWND_T0P, /* handle to sibling window */ 
(USHORT)FID_CLIENT, /* window identifier */ 
pWindowData, /* pointer to buffer */ 


NULL); /* pointer to structure with pres, params. */ 

if (IhwndClient) 

{ 

WinDestroyWindow(hwndFrame); 
return NULLHANDLE; 


WinSendMsg(hwndFrame,WM_SETICON,MPFRQMP(^wpQueryIcon(somSelf)),NULL); 



WinSetWindowText(WinWindowFromID(hwndFrame, 

(USHORT)FIDJTITLEBAR), 
wpQueryTitle(somSelf)); 


* Restore the Window Position 
*/ 

fSuccess = WinRestoreWindowPos( szMYFILEClassTitle, /* class title */ 

wpQueryTitie(somSelf), /* object title */ 

hwndFrame); 

if (!fSuccess) 

{ 

SWP swp; 

/* Get the dimensions and the shell’s suggested 
* location for the window 
*/ 

WinQueryTaskSizePos(hab,0,£ swp); 

/* Set the frame window position 
*/ 

swp. f 1 = SWP_SIZE | SWP_MOVE | SWP_RESTORE | SWP_ZORDER; 

WinSetWindowPos(hwndFrame, HWND_T0P, swp.x, swp.y, 

swp.cx, swp.cy, swp.fl); 


WinShowWindow(hwndFrame,TRUE); 
return hwndFrame; 

} /* end MYFILEInit() */ 


/* success */ 


MYFILEWndProc() 


DESCRIPTION: MYFILE Window Procedure 


MRESULT EXP ENTRY MYFILEWndProc( HWND hwnd, ULONG msg, MPARAM mpl, MPARAM mp2 ) 

{ 

PWINDOWDATA pWindowData; 

HWND hwndFrame; 

BOOL fSuccess; 


hwndFrame = WinQueryWindow(hwnd, QW PARENT); 

switch( msg ) 

{ 

case WM CREATE: 


pWindowData = (PWINDOWDATA) mpl; 

if (pWindowData == NULL) 

{ 

DebugBox("MYFILEWndProc:WM CREATE”, "couldn’t get window words”); 
return FALSE; 

} 

/* 

* Fill in the class view/usage details and window specific data 

* for this instance. 

*/ 

pWindowData->UseI tern, type = USAGE_OPENVIEW; 

pWindowData->ViewItem.view = OPEN MYFILE; 

pWindowData->ViewItem.handle = hwndFrame; 




Files MYFILE.c 03/22/94 14s26 


Printed on 08/01/94 at 17;02 


Page 11 


/* 

* Set window pointer with object pointer and instance view info. 

* Then add view to the in-use list so wpSwitchTo works. 

V 

WinSetWindowPtr(hwnd, QWL_USER, pWindowData); 

wpAddToObjUseList(pWindowData->somSelf,&pWindowData->UseItem); 
_ wpRegisterView(pWindowData->somSelf, hwndFrame, 

wpQueryTitle(pWindowData->somSelf)); 

WinSetFocus( HWND_DESKTOP, hwndFrame); 
break; 

case WM_COMMAND: 
break; 

case WM PAINT; 

pWindowData = (PWINDOWDATA) WinQueryWindcrwPtr (hwnd, QWL_USER); 

if (pWindowData == NULL) 

{ 

DebugBox("MYFILEWndProc:WM_PAINT" / ’’couldn't get window words"); 
return FALSE; 

} 

else 

{ 

HPS hps; 

RECTL recti; 

hps = WinBeginPaint( hwnd, (HPS)NULLHANDLE, firectl); 

WinFillRect( hps, firectl, SYSCLR_WINDOW); 

WinDrawPointer(hps, 50, 50, 

wpQuerylcon(pWindowData->somSelf), DP_NORMAL); 
WinEndPaint( hps ); 

} 

break; 

case WM CLOSE: 

{ 

HAB hab; 

hab = WinQueryAnchorBlock(HWND__DESKTOP) ; 

pWindowData = (PWINDOWDATA) WinQueryWindowPtr(hwnd, QWL_USER); 

if (pWindowData == NULL) 

{ 

DebugBox("MYFILEWndProc:WM^CLOSE", "couldn’t get window words’’); 
return FALSE; 

} 

/* 

* Restore the Window Position 
*/ 

fSuccess = WinStoreWindowPos(szMYFILEClassTitle, 

wpQueryTitle(pWindowData->somSelf), 
hwndFrame); 

wpDeleteFromObjUseList(pWindowData->somSelf,&pWindowData->UseItem); 
~wpFreeMem(pWindowData->somSelf,(PBYTE)pWindowData); 

WinPostMsg( hwnd, WM_QUIT, 0, 0 ); 

WinDestroyWindow ( hwndFrame ) ; 

} 

break; 

default: 

return WinDefWindowProc( hwnd, msg, mpl, mp2 ); 


> 

return FALSE; 

} /* end MYFILEWndProc() */ 

/****************************************************************************** 

* 

* LastWorkerDlgProc() 

A 

* DESCRIPTION: Dialog Procedure for LastWorker settings page 

* 

******************************************************************************/ 
MRESULT EXPENTRY LastWorkerDlgProc(HWUD hwndDlg, ULONG msg, 

MPARAM mpl, MPARAM mp2) 

{ 

LASTWORKERDLGDATA * pLastWorkerDlgData; 

switch (msg) 

{ 

case WM_INITDLG: /* 0x003b */ 

{ 

PSZ pszTemp; 

/* 

* Store some instance specific data in Window words of this dialog. 

* This will ensure our dialog procedure can access this objects 

* data (our dialog proc isn’t always passed a *somSelf pointer). 

*/ 

pLastWorkerDlgData = 

(PLASTWORKERDLGDATA) _wpAllocMem((MYFILE *)rap2, sizeof(*pLastWorkerD 
lgData), NULL); 

if (pLastWorkerDlgData) 

{ 

meraset((PVOID) pLastWorkerDlgData, 0, sizeof(*pLastWorkerDlgData)); 
pLastWorkerDlgData->cb = sizeof(*pLastWorkerDlgData); 

pLastWorkerDlgData->somSeIf = (MYFILE *) mp2; /* pointer to this o 

bject */ 

pszTemp = queryLastWorker(pLastWorkerDlgData->somSelf); 
if (pszTemp) 

{ 

pLastWorkerDlgData->PrevWorker = 

(PSZ) wpAllocMem(pLastWorkerDlgData->somSelf, 

CCHMAXPATH+1, NULL); 
if (pLastWorkerDlgData~>PrevWorker) 

{ 

strcpy(pLastWorkerDlgData->PrevWorker, pszTemp); 

} 

} 

pLastWorkerDlgData->restorePrevWorker = 

(PSZ) wpAllocMem(pLastWorkerDlgData->somSelf, 

CCHMAXPATH +1, NULL); 

if (pLastWorkerDlgData->restorePrevWorker) 

{ 

strcpy(pLastWorkerDlgData->restorePrevWorker, 
pLastWorkerDlgData->PrevWorker); 

} 

} 

else 

{ 

DebugBox("LastWorkerDlgProc:WM INITDLG", "Couldn't allocate window w 

ords"); 

break; 

> 

WinSetWindowPtr(hwndDlg, QWL_USER, pLastWorkerDlgData); 




Files MYFILE.c 03/22/94 14s26 


/* set the text limit on the entry field 
*/ 

W±nSendDlgItemMsg( hwndDlg, IDC_LASTWORKER, EM_SETTEXTLIMIT, 
MPFROMSHORT( 0x1000-1 ), 0 ); 

/* set the name into the entry field 
*/ 

WinSetWindowText( WlnWlndowFromlD( hwndDlg, IDCLASTWORKER ), 
queryLastWorker( (MYFILE *) mp2) ); 

return (MRESULT) FALSE; 

} /* end case WM_INITDLG: */ 

case VM DESTROY* /* 0x0002 */ 


); 


MYFILE * pObject; 

pLastWorkerDlgData = WinQueryWindowPtr (hwndDlg, QWL USER); 
if (pLastWorkerDlgData == NULL) 

{ 

DebugBox("LastWorkerDlgProc:WM DESTROY", "couldn’t get window words 
break; 

} 


if 

{ 

} 


(pLastWorkerDlgData->PrevWorker) 

_wpFreeMem(pLastWorkerDlgData->soraSelf, 

(PBYTE) pLastWorkerDlgData->PrevWorker); 


if 

{ 

} 


(pLastWorkerDlgData->restorePrevWorker) 

_wpFreeMem(pLastWorkerDlgData->somSelf, 

(PBYTE) pLastWorkerDlgData->restorePrevWorker); 


pObject = pLastWorkerDlgData->somSelf; 
_wpFreeMem(pObject, (PBYTE)pLastWorkerDlgData); 
return (WinDefDlgProc(hwndDlg, msg, mpl, mp2) ); 


case WM COMMAND: 


/* 0x0020 */ 


pLastWorkerDlgData = WinQueryWindowPtr(hwndDlg, QWL USER); 
if (pLastWorkerDlgData == NULL) 

{ 

DebugBox("LastWorkerDlgProcsWM COMMAND", "couldn’t get window words’ 
break; 

} 


switch (SHORT1FROMMP(mpl)) 

{ 

case ID_UNDO: /* 0x0321 */ 

if (pLastWorkerDlgData->restorePrevWorker) 

{ 

_setLastWorker(pLastWorkerDlgData->somSelf, 

pLastWorkerDlgData->restorePrevWorker); 


if (pLastWorkerDlgData->PrevWorker) 

{ 

strcpy(pLastWorkerDlgData->PrevWorker, 

pLastWorkerDlgData->restorePrevWorker); 


} 


Printed on 08/01/94 at 17s02 


Pag© 


WinSetWindowText( WinWindowFromID( hwndDlg, IDC_LASTWORKER ), 
pLastWorkerDlgData->restorePrevWorker); 

\ 

break; 

case ID_DEFAULTs /* 0x0322 */ 

/* 

* preserve previous values 

V 

setLastWorker(pLastWorkerDlgData->somSelf, DEFAULT LASTWORKER); 

if (pLastWorkerDlgData->PrevWorker) 

{ 

strcpy(pLastWorkerDlgData->PrevWorker, DEFAULT_LASTWORKER); 

> 

WinSetWindowText( WinWindowFromID( hwndDlg, IDC LASTWORKER ), 
pLastWorkerDlgData->PrevWorker); 

break; 

case ID_HELP: /* 0x0323 */ 

break; 

> /* end switch (SHORTlFROMMP(mpl)) */ 

return (MRESULT) TRUE; 

case WM_CONTROL: /* 0x0030 */ 

{ 

pLastWorkerDlgData = WinQueryWindowPtr(hwndDlg, QWL USER); 
if (pLastWorkerDlgData == NULL) 

{ 

DebugBox("LastWorkerDlgProc:WM CONTROL", "couldn't get window words" 
break; 

} 

switch (SHORT1FROMMP(mpl)) 

{ 

case IDCJLASTWORKER: 

if (SHORT2FROMMP(mpl) == EN_CHANGE) 

{ 

CHAR newworker[CCHMAXPATH+1]; 

WinQueryWindowText( WinWindowFromID( hwndDlg, IDC LASTWORKER), 
CCHMAXPATH+1, newworker ); 

setLastWorker(pLastWorkerDlgData->somSelf, newworker); 
if (pLastWorkerDlgData->PrevWorker) 

{ 

strcpy(pLastWorkerDlgData->PrevWorker, newworker); 

} 

} 

return (MRESULT) TRUE; 

} 

break; 

} /* end case WM CONTROL: */ 

} /* end switch (msg) */ 

return (WinDefDlgProc(hwndDlg, msg, mpl, mp2) ); 

/* end LastWorkerDlgProc() */ 






Files MYFOLDER.c 03/22/94 14s26 


* This file was generated by the SOM Compiler. 

* FileName; myfolder.c. 

* Generated usings 

* SOM Precompiler spc: 1.22 

* SOM Emitter emitcs 1.24 
*/ 


Module Names MYFOLDER.C 

OS/2 Work Place Shell Sample Program 

Copyright (C) 1994 IBM Corporation 

DISCLAIMER OF WARRANTIES. The following [enclosed] code is 
sample code created by IBM Corporation. This sample code is not 
part of any standard or IBM product and is provided to you solely 
for the purpose of assisting you in the development of your 
applications. The code is provided “'AS IS", without 
warranty of any kind. IBM shall not be liable for any damages 
arising out of your use of the sample code, even if they have been 
advised of the possibility of such damages. 

Entry Points? 

Class Methods? 

myfoldM_clsQueryModuleHandle 

Overridden Class Methods: 

myfoldMwpclsInitData 
my foldM_wpclsQueryTi11e 
myfoldM_wpclsQueryIconData 
myfoldM_wpclsQueryDefaultView 

Instance Methods: 

myfold_closeViews 

myfold_queryFirstViewHandle 

myfold_setFirstViewHandle 

Overridden Instance Methods? 

myfold wpOpen 
myfold_wpClose 

myfold_wpMenuItemHelpSelected 
myfold_wpMenuItemSelected 
myfold_wpModifyPopupMenu 
myfold_wpDragOver 
myfo1d_wpDrop 

myfold_wpDeleteFromObjUseList 

myfold_wpQueryConcurrentView 

myfold_wpInitData 

Non-Method Functions: 




**************** 


*******************/ 


#define INCL_DOS 
#define INCL_PM 
#include <os2.h> 


Printed on 08/01/94 at 17s02 


Pi 


#include <string.h> 

#define MYFOLDER Class Source 
#define M_MYFOLDER_ClaIs_Source 
#include "myfolder.ih" 

#include "myfolder.ph" 

/***************** GLOBAL/STATIC (NON-INSTANCE) DATA SECTION *********** 
***** 

***** This data shouldn't be changed by instance methods or it will 
***** effect all instances 1 Any variables that are specific (unique 
***** values) for each instance of this object should be declared as 
***** instance data or dynamically allocated and stored as window data. 
***** 

***** This global data should be declared as class instance data 

***** if if w in change after initialization. In this case, it will 
***** be accessed through class methods. 


s zMYFOLDERClassTitle [ CCHMAXPATH ] 
hmod = NULLHANDLE; 


METHOD: wpOpen 


DESCRIPTION: 


( ) PRIVATE 
(X) PUBLIC 


* Do special processing on first open of folder 
*/ 

SOM_Scope HWND SOMLINK myfold_wpOpen(MYFOLDER *somSelf, 
HWND hwndCnr, 

ULONG ulView, 

ULONG param) 


HWND hwndFromParentOpen = NULLHANDLE; 

MYFOLDERData *somThis = MYFOLDERGetData(somSelf); 
MYFOLDERMethodDebug("MYFOLDER","myfold_wpOpen") ; 

if (_queryFirstViewHandle(somSelf) == NULLHANDLE) 

{ 

/* we ONLY want to do this on the FIRST open of the folder. 

*/ 

if (_wpPopulate(somSelf, NULLHANDLE, NULL, FALSE)) 

{ 

WPObject *Obj; 

WPObject *LastFoundObj = NULL; 

/* loop through the contents of the folder, checking each to 

* see if it is an instance of a WPFolder, we'll delete any 

* WPFolders as a cleanup step 
*/ 

for ( Obj = wpQueryContent( somSelf,NULL, (ULONG)QC_First); 

Ob j; 

Obj = wpQueryContent(somSelf, Obj, (ULONG) QC_Next )) 

{ 

/* delete the last object found on the previous iteration 

* of the loop (we couldn't delete it then, because we 

* needed it at the top of the loop for this iteration) 

V 

if (LastFoundObj) 

{ 

_wpDelete(LastFoundObj,0); 

LastFoundObj = NULL; 





File; MYFOLDER.c 03/22/94 14:26 


} 

/* we want to make sure that all previously 
* existing folders are deleted 
V 

if ( somIsA(Obj, WPFolder)) 

{ 

LastFoundObj = Obj; 

} 

} /* end for */ 


/* if there is still one object left to delete, do it now 
*/ 

if (LastFoundObj) 

{ 

wpDelete(LastFoundObj,0); 

LastFoundObj = NULL; 

} 

} /* end if populate */ 

} /* end if first open */ 

/* now, show the opened folder */ 

hwndFromParentOpen = parent wpOpen(somSelf, hwndCnr, ulView, param); 

/* if this is the first open, set our global flag 
*/ 

if (_queryFirstViewHandle(somSelf) == NULLHANDLE) 

{ 

setFirstViewHandle(somSelf, hwndFromParentOpen); 

} 

return hwndFromParentOpen; 

} 

/* 

* 

* METHOD: wpInitData 

* DESCRIPTION: 

* 

* Set object's detail class to be MYFILE 
*/ 

SOM_Scope VOID SOMLINK myfold_wpInitData(MYFOLDER *somSelf) 

{ 

SOMClass * pClass; 
somld Classld; 

MYFOLDERData *somThis = MYFOLDERGetData(somSelf) ; 
MYFOLDERMethodDebugC'MYFOLDER","myfold_wpInitData") ; 

parent wpInitData(somSelf); 

Classld = SOM_IdFroraString( "MYFILE” ); 

pClass = somFindClass( SOMClassMgrObject, Classld, 1, 1); 

SOMFree(Classld); 

wpSetFldrDetailsClass(somSelf, pClass); 

} 

/* 

* METHOD: wpModifyPopupMenu ( ) PRIVATE 

* (X) PUBLIC 

* DESCRIPTION: 

* Add our extra option to the context menu to close all but first view 
*/ 


( ) PRIVATE 
(X) PUBLIC 


Printed on 08/01/94 at 17:02 


Page 2 


SOM Scope BOOL SOMLINK myfold wpModifyPopupMenu(MYFOLDER *soraSelf, 

HWND hwndMenu, 

HWND hwndCnr, 

ULONG iPosition) 

{ 

HMODULE hmod = NULLHANDLE; 

zString zsPathNarae; 

/* MYFOLDERData *somThis = MYFOLDERGetData(somSelf); */ 

MYFOLDERMethodDebug("MYFOLDER","myfold wpModifyPopupMenu"); 

zsPathName = 

_somLocateClassFile( SOMClassMgrObject, SOM IdFroraString("MYFOLDER"), 
MYFOLDER_MajorVersion, MYFOLDER MinorVersion); 

DosQueryModuleHandle(zsPathName, fihmod); 
wpInsertPopupMenuItems( somSelf, hwndMenu, 0, hmod, ID CLOSEVIEWSMENU, 0); 

return (parent wpModifyPopupMenu(somSelf,hwndMenu,hwndCnr,iPosition)); 


METHOD: wpMenuItemSelected 


DESCRIPTION: 


( ) PRIVATE 
(X) PUBLIC 


* Process input from the extra menu option that we added. 

V 

SOM_Scope BOOL SOMLINK myfold_wpMenuItemSelected(MYFOLDER *somSelf, 
HWND hwndFrame, 

ULONG ulMenuId) 

{ 

/* MYFOLDERData *somThis = MYFOLDERGetData(somSelf); */ 
MYFOLDERMethodDebug("MYFOLDER","myfold wpMenuItemSelected"); 

if (ulMenuId == IDM_CLOSEVIEWS) 

{ 

closeViews(somSelf); 
return(TRUE); 

} 

else 

{ 

return (parent_wpMenuItemSelected(somSelf,hwndFrame,ulMenuId)); 

} 


METHOD: closeViews 


DESCRIPTION: 


( ) PRIVATE 
(X) PUBLIC 


* Close all but the first of the currently open views of a rayfolder object. 

* NOTE: There is a "Close Views" option on the context menu, that will 

* call this method 
*/ 

SOM_Scope void SOMLINK myfold closeViews(MYFOLDER *somSelf) 

{ 

PUSEITEM pUseltem, pUseltemNext; 

PVIEWITEM pViewItem; 

HWND hwndView; 

typedef struct _HANDLENODE 

{ 

LHANDLE handle; 

struct _HANDLENODE * pNextHandle; 

} HANDLENODE; 



Files MYFOLDER «c 03/22/94 14s26 


HANDLENODE *pHandles = NULL; 

HANDLENODE *pTemp = NULL; 

/* MYFOLDERData *somThis = MYFOLDERGetData(somSelf); */ 
MYFOLDERMethodDebug ("MYFOLDER", "myfold_closeViews") ; 


/* go through use list looking for OPENVIEW use items, as you 
* find one, add view item's handle to a list 
*/ 

for ( pUseltem = _wpFindUseItem(somSelf , USAGE_OPENVIEW, NULL); 
pUseltern; 

pUseltem = wpFindUseItem(somSelf , USAGE OPENVIEW, pUseltem) ) 

{ 

if (pTemp = (HANDLENODE*) wpAllocMem(somSelf,sizeof(HANDLENODE),NULL 

{ 

pViewItem = (PVIEWITEM)(pUseltem + 1); 
pTemp->handle - pViewItem->handle; 
pTemp->pNextHandle = pHandles; 
pHandles = pTemp; 


/* go through list of handles we just found and close any 
* views other than the first one 
*/ 

pTemp = pHandles; 
while (pTemp) 

{ 

if ( queryFirstViewHandle(somSelf) != (HWND)pTemp->handle ) 

{ 

WinSendMsg( (HWND)pTemp->handle, WM_CL0SE, 0, 0); 

} 

pTemp = pTemp->pNextHandle; 

} 

/* free our list */ 
while (pHandles) 

{ 

pTemp = pHandles; 
pHandles = pTemp->pNextHandle; 
wpFreeMem(somSelf,(PBYTE)pTemp); 


METHOD: queryFirstViewHandle 


DESCRIPTION: 


( ) PRIVATE 
(X) PUBLIC 


return the handle of the view that was opened first of the 
currently open views of this myfolder object. 


SOM Scope HWND SOMLINK myfold queryFirstViewHandle(MYFOLDER *somSelf) 

{ 

MYFOLDERData *somThis = MYFOLDERGetData(somSelf); 
MYFOLDERMethodDebug("MYFOLDER","myfold_queryFirstViewHandle"); 

return hwndFirstView; 


/ 


Printed on 08/01/94 at 17:02 


* METHOD: setFirstViewHandle ( ) PRIVATE 

* (X) PUBLIC 

* DESCRIPTION: 

* 

* Do special processing on first open of folder 

* 

* PARAMETERS: 

* HWND - hwnd of the first currently open view of this object 

* 

* RETURNS: 


TRUE - hwnd set successfully 

FALSE - first hwnd wasn't set successfully 


*/ 

SOM Scope BOOL SOMLINK myfold setFirstViewHandle(MYFOLDER *somSelf, 
HWND hwndView) 

{ 

BOOL rc = TRUE; 

MYFOLDERData *somThis = MYFOLDERGetData(somSelf); 
MYFOLDERMethodDebug("MYFOLDER","myfold_setFirstViewHandle"); 


if (hwndView 1= NULLHANDLE) 

{ 

if ( hwndFirstView == NULLHANDLE) /* no current first view */ 

{ 

hwndFirstView = hwndView; /* setting to a first view handle */ 

} 

else 

{ 

/* a non-null hwndFirstView can only be wiped out by resetting it 

* to NULLHANDLE, not to another handle. This prevents a 

* misuse of this method 
*/ 

rc = FALSE; 


/* wiping out first view handle */ 


hwndFirstView = NULLHANDLE; 


return rc; 


* METHOD: wpMenuItemHelpSelected 


DESCRIPTION: 


( ) PRIVATE 
(X) PUBLIC 


Process input from the extra menu option that we added. 


SOM Scope BOOL SOMLINK myfold_wpMenuItemHelpSelected(MYFOLDER *somSelf, 
ULONG Menuld) 

{ 

MYFOLDERData *somThis = MYFOLDERGetData(somSelf); 

MYFOLDERMethodDebug("MYFOLDER","myfold_wpMenuItemHelpSelected") ; 


return (parent wpMenuItemHelpSelected(somSelf,Menuld)); 


/ 



Fil@s MYFOLDER„c 03/22/94 14:26 


* METHODS wpClose ( ) PRIVATE 

* (X) PUBLIC 

* DESCRIPTIONS 

* 

* When a folder object is closed, we will zero out its first view 

* instance variable, so that the next time it has a first view opened, 

* we can keep track of that. 


*/ 

SOM Scope BOOL SOMLINK myfold wpClose(MYFOLDER *somSelf) 

{ 

MYFOLDERData *soraThis = MYFOLDERGetData(somSelf); 

BOOL rcParentClose; 

MYFOLDERMethodDebug ("MYFOLDER","myfold_wpClose") ; 


rcParentClose = parent_wpClose(somSelf); 

setFirstViewHandle(somSelf, NULLHANDLE); 
return(rcParentClose) ; 

> 


/* 

* METHOD s wpDragOver 

A 

* DESCRIPTIONS 


( ) PRIVATE 
(X) PUBLIC 


* Instances of class MYFOLDER are the only folders that accept a drop 

* of a MYFILE object. This override returns DOR_DROP when a MYFILE 

* object is dragged over a MYFOLDER object. 

A/ 

S0M_Scope MRESULT SQMLINK myfold_wpDragOver(MYFOLDER *somSelf, 

HWND hwndCnr, 

PDRAGINFO pdrglnfo) 

{ 

MRESULT mr; 

PDRAGITEM pDragltem; 

ULONG i; 

ULONG ulOurs = 0; 


/* MYFOLDERData *sonfThis = MYFOLDERGetData(somSelf); */ 
MYFOLDERMethodDebug("MYFOLDER","rayfold_wpDragOver") ; 


for (i = 0; i < pdrglnfo->cditem ; i++) 

{ 

pDragltem = DrgQueryDragitemPtr(pdrglnfo,i); 


if (DrgVerifyRMF(pDragltem,"DRM_OUROWNSPECIAL","DRF_OBJECT") ) 

{ 

ulOurs++; 

} 


if (ulOurs == 0) 

{ 

mr = (parent wpDragOver(somSelf,hwndCnr,pdrglnfo)); 

} 

else 

{ 

if (ulOurs == pdrgInfo->cditera) 

{ 

mr = MRFROM2SHORT(DOR_DROP, 

(SHORT)((pdrglnfo->usOperation == DO DEFAULT) 
? DO MOVE s pdrgInfo->usOperation)); 

} 

else 

{ 


Printed on 08/01/94 at 17s02 


Pag© 4 


mr = MRFROM 2 S HORT(DOR_NEVERDROP,DO_DEFAULT); 


return mr; 


* METHOD: wpDrop 


* DESCRIPTIONS 


( ) PRIVATE 
(X) PUBLIC 


* This override will be called after a drop of a MYFILE object, so that 

* the drop can actually be processed. 

A/ 

SOM_Scope MRESULT SOMLINK myfold wpDrop(MYFOLDER *somSelf, 

HWND hwndCnr, 

PDRAGINFO pdrglnfo, 

PDRAGITEM pdrgltem) 

{ 

ULONG i; 

PDRAGITEM pDragltem; 

/* MYFOLDERData *somThis = MYFOLDERGetData(somSelf); */ 
MYFOLDERMethodDebug("MYFOLDER* V'myfold_wpDrop"); 

for (i = 0; i < pdrglnfo->cditem ; i++) 

{ 

pDragltem = DrgQueryDragitemPtr(pdrglnfo,i) ; 

if (DrgVerifyRMF(pDragltem,"DRM_OUROWNSPECIAL M ,"DRF OBJECT")) 

{ 

DrgDeleteStrHandle(pDragltem->hstrRMF); 

pDragltem->hstrRMF = DrgAddStrHandle("<DRM OBJECT,DRF OBJECT>”); 

} 


return (parent_wpDrop(somSelf,hwndCnr,pdrglnfo,pdrgltem)); 


SOM_Scope BOOL SOMLINK myfold_wpDeleteFromObjUseList(MYFOLDER *somSelf, 
PUSEITEM pUseltem ) 

{ 

MYFOLDERData *somThis = MYFOLDERGetData(somSelf) ; 

PUSEITEM pitern; 

BOOL rcParentCall; 

MYFOLDERMethodDebug( "MYFOLDER","myfold wpDeleteFromObjUseList") ; 

rcParentCall = parent_wpDeleteFromObjUseList(somSelf, pUseltem); 

pitern = _wpFindUseItem(somSelf, USAGE OPENVTEW, NULL); 
if (Ipltem) 

{ 

_setFirstViewHandle(somSelf, NULLHANDLE); 

> 

return(rcParentCall); 


METHOD: wpQueryConcurrentView 


* DESCRIPTION: 


( ) PRIVATE 
(X) PUBLIC 


* Objects of MYFOLDER class have concurrent views set on 

* by default 

V 

SOM_Scope ULONG SOMLINK myfold_wpQueryConcurrentView(MYFOLDER *somSelf ) 



Files MYFOLDER.c 03/22/94 14s26 


{ 

/* MYFOLDERData *3onfThis = MYFOLDERGetData(somSelf); */ 

MYFOLDERMethodDebug("MYFOLDER", "rayfold wpQueryConcurrentView"); 

return CCVXEW_ON; 

} 

#undef SOM CurrentClass 
#define SOM CurrentClass SOMMeta 

/* 

* METHOD: wpclsInitData 

* DESCRIPTION: 

* Initalize the class data 


*/ 

SGM_Scope void SOMLINK myfoldM_wpclsInitData(MYFOLDER *somSelf) 

{ 

/* MYFOLDERData *soraThis = MYFOLDERGetData(somSelf); */ 
MYFOLDERMethodDebug("MYFOLDER","myfoldM_wpclsInitData") ; 

parent_wpclsInitData(somSelf); 


/* 

* Get class title 

V 

if (lWinLoadString(WinQueryAnchorBlock(HWND DESKTOP), _clsQueryModuleHandle( 
somSelf), ID_TITLE, 

sizeof(szMYFOLDERClassTitle), szMYFOLDERClassTitle)) 

/* Load string failed: use the parent’s string */ 
strcpy(szMYFOLDERClassTitle, parent_wpclsQueryTitle(somSelf)); 

} 


/* 

* METHOD: clsQueryModuleHandle 

* DESCRIPTION: 


( ) PRIVATE 
(X) PUBLIC 


This method returns the module handle of this class. If this is the 
first invocation, DosQueryModuleHandle is called to save the handle 
for future invocations. 


* RETURN: 

* 

* 0 Unsuccessful 

* non-zero module handle 


V 

SOM_Scope HMODULE SOMLINK rayfoldM_clsQueryModuleHandle(M_MYFOLDER *somSelf) 

{ 

APIRET rc; 


/* M_MYFOLDERData *somThis = M_MYFOLDERGetData(somSelf); */ 
M_MYFOLDERMethodDebug("M_MYFOLDER","rayfoldM_clsQueryModuleHandle"); 

/* 

* Make sure we already have module handle 
*/ 


if (hmod == NULLHANDLE) 

{ 


Printed on 08/01/94 at X7s02 


zString zsPathName; 

/* 

* Retrieve registered pathname of our module (DLL) and query the 

* module handle. 

*/ 

zsPathName = 

somLocateClassFile( SOMClassMgrObject, SOM IdFromString("MYFOLDER"), 
MYFOLDER_MajorVersion,~MYFOLDER_MinorVersion); 

rc = 

DosQueryModuleHandle( zsPathName, fihmod); 
if (rc) 

{ 

DebugBox("myfoldM wpclsInitData", "Failed to load module"); 

return; 


} /* end if (hmod == NULLHANDLE) */ 

return (hmod); 

} 

/* 

* METHOD: wpclsQueryDefaultView 

* DESCRIPTION: 

* MYFOLDER objects open in OPEN_DETAILS by default 

V 

SOM_Scope ULONG SOMLINK myfoldM_wpclsQueryDefaultView(M_MYFOLDER *somSelf) 

{ 

/* M MYFOLDERData *somThis = M_MYFOLDERGetData(somSelf); */ 

M MYFOLDERMethodDebug("M_MYFOLDER", "myfoldM_wpclsQueryDefaultView") ; 

return OPEN DETAILS; 


( ) PRIVATE 
(X) PUBLIC 


/* 


* METHOD: wpclsQueryTitle 

* 

* DESCRIPTION: 

* Return class title for MYFOLDER class 


V 

SOM_Scope PSZ SOMLINK myfoldM_wpclsQueryTitle(M_MYFOLDER *somSelf) 

{ 

/* M_MYFOLDERData *somThis = M_MYFOLDERGetData(somSelf); */ 

M MYFOLDERMethodDebug("M MYFOLDER", "myfoldM_wpclsQueryTitle"); 

if (*szMYFOLDERClassTitle ) 

return( szMYFOLDERClassTitle ); 
else 

return( parent wpclsQueryTitle(somSelf)); 

} 

/* 


METHOD: wpclsQuerylconData 


( ) PRIVATE 

(X) PUBLIC 





Files MYFOLDER.c 03/22/94 14s26 


* DESCRIPTION: 

* Return the class icon 

A 

V 

SOM_Scope ULONG SGMLINK myfoldM_wpclsQueryIconData(M MYFOLDER *somSelf, 
PICONINFO plconlnfo) 

{ 

APIRET rc; 

M_MYFOLDERMethodDebug( **M MYFOLDER'”/'niyfoldM wpclsQuerylconData"); 
if (plconlnfo) 


/* 


fill in icon information 


*/ 


pIconInfo->fForraat = ICON_RESOURCE; 
pIconInfo->hmod= _clsQueryModuleHandle(somSelf) ; 
pIconInfo->resid= ID ICON; 


return (sizeof(ICONINFO)); 


} 





Files MYFILE.esc 03/22/94 14s26 


/A***************************************************************************** 

A 

* Module Names MYFILE 

* 

* OS/2 Work Place Shell Sample Program 

* 

* Copyright (C) 1994 IBM Corporation 

A 

* DISCLAIMER OF WARRANTIES. The following code is 

* sample code created by IBM Corporation. This sample code is not 

* part of any standard or IBM product and is provided to you solely 

* for the purpose of assisting you in the development of your 

* applications. The code is provided '"AS IS", without 

* warranty of any kind. IBM shall not be liable for any damages 

* arising out of your use of the sample code, even if they have been 

* advised of the possibility of such damages. 

A 

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/ 

ftAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 

* Include the class definition file for the parent class 

flAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 

include <wpdataf.sc> 

jfAAAAAAAAA ********************************************************************* 

* Define the new class 

^AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 


class: 


MYFILE, 

external stem = myfile, 
local, 

external prefix = myf_, 

classprefix = myfM_, 

major version = 1, 

minor version =2; 


-- CLASS: MYFILE 
-- CLASS HIERARCHY: 


SOMObject 

- WP(j)bject 


WPFileSystera 

- WPDataFile 

'- MVT?T 


-- DESCRIPTION: 

This is the sample MYFILE object class. 

An instance of this class can be created as a Workplace object. 


ftAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 

# Specify the parent class 

flAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 

parent: WPDataFile; 

jfAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 

# Specify the release order of new methods. This ensures binary 

# compatability if we change the order of our methods in .c and .esc files. 

^aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 


Printed on 08/01/94 at 17:02 Page 1 


release order: 

queryLastWorker, 
setLastWorker, 
soundAlarm, 

AddLastWorkerPage, 

clsQueryModuleHandle, 

clsQueryDefaultFileText; 

ftAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 

# Passthru PRIVATE definitions to the .ph file 

ftAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 


passthru: C.ph; 


/* 

* The following structures will be used to store window specific data 

* and a pointer to the object that created the window/dialog. 

* 

* They’re allocated when the Client window is created. This 

* allows us to pass the *somSelf pointer and use it in our 

* window and dialog procedures (the system only passes this 

* pointer to methods). 

*/ 


typedef struct WINDOWDATA 
{ 


USHORT cb; 

MYFILE *somSelf; 

USEITEM Useltem; 

VIEWITEM Viewltem? 

} WINDOWDATA; 

typedef WINDOWDATA *PWINDOWDATA; 


/* size of this structure */ 

/* pointer to this instance */ 
/* global class usage information 
/* global class view information 1 


*/ 

7 


/* 

* Window data for the Worker dialog (settings page) 

*/ 

typedef struct _LASTWORKERDLGDATA 

{ 

USHORT cb; /* size of this structure */ 

MYFILE *soraSelf; /* pointer to this instance */ 

PSZ PrevWorker; /* indicates name of person to last work */ 

/* with this file */ 

PSZ restorePrevWorker; /* used for UNDO */ 

} LASTWORKERDLGDATA; 

typedef LASTWORKERDLGDATA *PLASTWORKERDLGDATA; 

/* 

* Private Debug helpers go here. They can be enabled/disabled by 

* defining DEBUG as a compiler directive. 

*/ 

#if defined(DEBUG) 

^define DebugBox(title, text) \ 

\ 

WinMessageBox( \ 

HWND_DESKTOP, \ 

HWND_DESKTOP, \ 

(PSZ) text, \ 

(PSZ) title, \ 

20 , \ 

MB_0K | MB_ INFORMAT ION | MB_MOVEABLE) 

#else 

#define DebugBox(title, text) /* do nothing if not debugging */ 
#endif 


endpassthru; /* C.ph */ 






Files MYFI1E.esc 03/22/94 14s26 


n****************************************************************************** 
# Passthru IMPLEMENTATION definitions to the .ih file 
£****************************************************************************** 

passthru; C.ih; 

#define INCL_WIN 
#define INCL_DOS 
#define INCL_GPIBITMAPS 
#define INCL_DOSERRORS 
#include <os2.h> 

#define INCL_WPCLASS 
#define INCL_WPFOLDER 

#include <pmwp.h> 

#define ID_TITLE 100 

#define ID_ICON 101 

#define IDDJLASTWORKER 200 /* settings page (dialog) */ 

#define IDC LASTWORKER 300 


/* 

* The following user-defined Popup menu items (ID_xxx) should be higher 

* than WPMENUID_USER. 

* 

* The ID_OPENMENU will become a submenu of the system's popup open menu 

* id, WPMENUID_OPEN. 

*/ 

#define ID_ALARMMENU (WPMENUIDJJSER+l) /* menus added to popup menu */ 

#define ID_OPENMENU (WPMENUID_USER+2) 

#define IDM_OPENMYFILE (WPMENUID_USER+3) /* submenus of added menus */ 

#define IDM_SOUNDALARM (WPMENUID_USER+4) 

#define ID_FRAME 3000 

#define ID_CLIENT 3001 

/* 

* Set unique view ids, in order for the default view checkmark 

* to be set correctly, on the Open submenu, this OPEN view id must 

* be the same value as the corresponding menu id. 

*/ 

#define OPEN_MYFILE IDM_OPENMYFILE 

/* 

* IDs of dialog items in MYFILE.RC 
*/ 

^define IDJJNDO 801 

#define ID_DEFAULT 802 

#define ID_HELP 803 

#define ID_HELP_LASTWORKER 804 
#define ID_HELP_SOUNDALARM 805 

/* 

* Keys for save-restore methods 
*/ 

#define IDKEY_LASTWORKER 1 

/* 

* Default values of instance data items 
*/ 

#define DEFAULT_LASTWORKER "Anonymous" 


/* frame window id */ 
/* client window id */ 


Printed on 08/01/94 at 17:02 


Page 


/* 

* Help IDs 

* 

* NOTE; At this time, no source file is provided to build help for this 

* sample. A pre-built help file, MYFILE.HLP, is provided containing the 

* following help ids. 

*/ 

#define ID_HELP_DEFAULT 256 
/* 

* Indexes into MYFILEDETAILS information, (arrays) 

*/ 

#define INDEX_LASTWORKER 0 
/* 

* MYFILEDETAILS: Structure used for details view 
*/ 

typedef struct ^MYFILEDETAILS 

{ 

PSZ pszLastWorker; /* Last person to work with myfile */ 

} MYFILEDETAILS; 

typedef MYFILEDETAILS *PMYFILEDETAILS; 
endpassthru; /* .ih */ 

#*************************************A***************************a************ 

# Define instance data 

I****************************************************************************** 

data: 

PSZ pszLastWorker; /* name of last person to work with this file */ 

|******************A*******A*******A****iAfi*(kA******A*A*****A***A**4ft****A***im 

# Define methods 

A****************************************************************************** 

methods: 

PSZ queryLastWorker(); 

( ) PRIVATE 
(X) PUBLIC 


Query name of last person to work with myfile 
— RETURN: 

PSZ name of last person to work on file 


-- METHOD: queryLastWorker 
-- DESCRIPTION: 


BOOL setLastWorker( PSZ pszWorkerName ); 

( ) PRIVATE 
(X) PUBLIC 

Set name of last person to work with myfile 
-- RETURN: 

TRUE Brake is on 

FALSE Brake is off 


-- METHOD: setLastWorker 
-- DESCRIPTION: 



Files MlfFXLE.cse 03/22/94 14s26 


BOOL soundAlann(); 

-- METHODS soundAlann 
-- DESCRIPTIONS 

Sound an alarm 
-- RETURNS 

TRUE Successful 

FALSE Unsuccessful 

ULGNG AddLastWorkerFage (KWND hwiiciNotebook) m , 

-- METHODS AddLastWorkerPage 
-- DESCRIPTIONS 

This method adds the Last Worker page to the settings notebook. 

-- RETURNS 

0 Unsuccessful 

ulPageld Identifier for the inserted page 

-- HOW TO OVERRIDES 

Method should always be overridden in order to replace or remove 
the last worker page from an object which is a descendent of rayfile 
In most cases, an override of this method will not call the parent. 

#aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 

# Specify methods being overridden 

flAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 

override wpInitData; 

-- OVERRIDES wpInitData 
-- DESCRIPTIONS 

Initialize our state variables. Allocate any extra memory that 
we might need. 

override wpUnlnitData; 

-- OVERRIDES wpUnlnitData 
-- DESCRIPTIONS 

Clear up memory that was allocated on wpInitData. 
override wpSaveState; 

-- METHODS wpSaveState ( ) PRIVATE 

(X) PUBLIC 

-- DESCRIPTIONS 

Save our state variables (pitch and duration). 


( ) PRIVATE 
(X) PUBLIC 


( ) PRIVATE 
(X) PUBLIC 


( ) PRIVATE 
(X) PUBLIC 


( ) PRIVATE 
(X) PUBLIC 


Printed on 08/01/94 at 17s02 


Page 3 


override wpRestoreState; ' ^ 

-- METHODS wpRestoreState 
-- DESCRIPTIONS 

Retrieve our saved state variables (pitch and duration). 

override wpAddSettingsPages; 

-- METHODS wpAddSettingsPages 
_ DESCRIPTIONS 

Add our own settings page to let the user alter the pitch 
and duration of the myfile's beep. 

override wpFilterPopupMenu; 

-- METHOD: wpFilterPopupMenu ( ) PRIVATE 

(X) PUBLIC 

-- DESCRIPTION: 

Filter out any options from the context that don’t apply. 

-- HOW TO OVERRIDE: 

No restrictions. 

override wpModifyPopupMenu; 

-- METHOD: wpModifyPopupMenu ( ) PRIVATE 

(X) PUBLIC 

-- DESCRIPTION: 

Add our extra option to the context menu to beep the horn 

override wpMenuItemSelected; 

-- METHOD: wpMenuItemSelected 
-- DESCRIPTION: 

Process input from the extra menu option that we added, 
override wpMenuItemHelpSelected; 

-- METHOD: wpMenuItemHelpSelected ( ) PRIVATE 

(X) PUBLIC 

-- DESCRIPTION: 

Process input from the extra menu option that we added, 
override wpQueryDetailsData; 

— METHOD: wpQueryDetailsData ( ) PRIVATE 

(X) PUBLIC 

-- DESCRIPTION: 

Returns the myfile specific data for the details view of this object. 


( ) PRIVATE 
(X) PUBLIC 


( ) PRIVATE 

(X) PUBLIC 


( ) PRIVATE 
(X) PUBLIC 




File; MYFILE.cec 03/22/94 14;26 



Sets the pointer (*ppDetailsData) to the beginning of the buffer 
into which the data is written. 

override wpOpen; 

METHOD: wpOpen 
-- DESCRIPTION: 

Opens the myfile window 

override wpSetup; 

-- METHOD: wpSetup 
-- DESCRIPTION: 

Specify Setup strings and do some initialization. This method is 
invoked once an object is completely created. 

override wpFormatDragltem; 

-- METHOD: wpFormatDragltem 
-- DESCRIPTION: 

Specify a unique RMF that will only be understood by instances 
of class MYFOLDER. (see wpDragOver and wpDrop overrides in 
myfolder.c). 

I************************************************************************ 

# Define class methods 

************************************************************************* 
HMODULE clsQueryModuleHandle (), class; 

-- METHOD: clsQueryModuleHandle 
-- DESCRIPTION: 

This method returns the module handle of this class. If this is the 
first invocation, DosQueryModuleHandle is called to save the handle 
for future invocations. 

-- RETURN: 

0 Unsuccessful 

non-zero module handle 

PSZ clsQueryDefaultFileText (), class; 

-- METHOD: clsQueryDefaultFileText 
-- DESCRIPTION: 

This method returns some default text to stuff in an empty MYFILE. 

-- RETURN: 


( ) PRIVATE 

(X) PUBLIC 


( ) PRIVATE 
(X) PUBLIC 


( ) PRIVATE 
(X) PUBLIC 


( ) PRIVATE 
(X) PUBLIC 


( ) PRIVATE 
(X) PUBLIC 



PSZ 


Printed on 08/01/94 at 17:02 



override wpclsQuerylconData, class; 

— METHOD: wpclsQuerylconDdata 

— DESCRIPTION: 

Return the class icon 


( ) PRIVATE 
(X) PUBLIC 


override wpclsQueryDefaultHelp, class; 

-- METHOD: wpclsQueryDefaultHelp ( ) PRIVATE 

(X) PUBLIC 

-- DESCRIPTION: 

Process input from the extra menu option that we added, 
override wpclsQueryDefaultView, class; 

-- METHOD: wpclsQueryDefaultView ( ) PRIVATE 

(X) PUBLIC 

-- DESCRIPTION: 

Returns the default view for a new instance of this object. 

-- REMARKS: 

Tell the system what our default open view is... 


override wpclsQueryDetailsInfo, class; 







Files MYFILE.esc 03/22/94 14:26 


Printed on 08/01/94 at 17s02 


Pa. 


-- METHOD: wpclsQueryDetailsInfo 
-- DESCRIPTION: 

Appends the myfile specific chain of FIELDINFO structures describing the 
details data of this object to *ppDetailsData (if ppDetailsData 
is NON-NULL). In this case it also sets *ppDetailsData to the 
head of the linked list. 

Adds the number of bytes required by the details data for myfile to *pSize 
(if pSize is NON-NULL). 

_ REMARKS: 

Add details data for this object. 


-- From WPFileSystem 

override wpclsQuerylnstanceFilter, class; 

-- METHOD: wpclsQuerylnstanceFilter 
-- DESCRIPTION: 

The wpclsQuerylnstanceFilter method is called to allow the class 
object to specify the file title filters for instances of its 
class. 

-- REMARKS: 

A pointer to a string containing file title filter(s). This 
string can contain several file title filters separated by a 
comma. Example: ,, *.TXT / *.DOC M 


override wpclsQueryStyle, class; 

-- METHOD: wpclsQueryStyle 
-- DESCRIPTION: 

The wpclsQueryStyle method is called to allow the class object 
to specify the default object class style for its instances. 

-- REMARKS: 

This method can be called at any time in order to determine the 
default style for instances of this class. 


( ) PRIVATE 
(X) PUBLIC 


( ) PRIVATE 
(X) PUBLIC 


( ) PRIVATE 
(X) PUBLIC 


This method should be overridden in order to modify the default 
object style for instances of this class. 





external prefix = myfold , 
class prefix = myfoldM , 
major version = 1, 
minor version = 2; 


CLASS: MYFOLDER 


-- CLASS HIERARCHY: 


WPObject 

- WPFileSystera 

' - A. 


DESCRIPTION: 


This is the sample MYFOLDER object class. 

An instance of this class can be created as a Workplace object 


# Specify the parent class 

A*************************** 

parent: WPFolder; 


# Specify the release order of new methods. This ensures binary 

# compatability if we change the order of our methods in .c and .esc files 

^*********************** 14 *************************************************** 


Printed on 08/01/94 at 17:02 Page 


release order: closeViews, 

queryFirstViewHandle, 
setFirstViewHandle, 
clsQueryModuleHandle; 

I*********************************************** 

# Passthru PRIVATE definitions to the .ph file 
************************************************ 

passthru: C.ph; 


* Private Debug helpers go here. They can be enabled/disabled by 

* defining DEBUG as a compiler directive. 

*/ 

#if defined(DEBUG) 

#define DebugBox(title, text) \ 

\ 

WinMessageBox( \ 

HWND_DESKTOP, \ 

HWND_DESKTOP, \ 

(PSZ) text, \ 

(PSZ) title, \ 

20 , \ 

MB_OK | MB_INFORMATION | MB_MOVEABLE) 

#else 

#define DebugBox(title, text) /* do nothing if not debugging */ 
#endif 

endpassthru; /* C.ph */ 


Passthru IMPLEMENTATION definitions to the .ih file 


passthru: C.ih; 

#define ID_TITLE 100 

#define ID_ICON 101 

#define ID_CLOSEVIEWSMENU (WPMENUID_USER+1) /* menus added to popup menu 

#define IDM_CLOSEVIEWS (WPMENUID_USER+2) /* submenus of added menus */ 

endpassthru; 

I****************************************************************************** 

# Define instance data 

I****************************************************************************** 


HWND hwndFirstView; 


# Define methods 

I*************************** 


void closeViews(); 


METHOD: closeViews 


( ) PRIVATE 
(X) PUBLIC 




File; MYFOLDER.esc 03/22/94 14;26 


-- DESCRIPTION; 

Close all but. the first open view of a myfolder object. 

HWND queryFirstViewHandle( ); 

METHOD; queryFirstViewHandle ( ) PRIVATE 

(X) PUBLIC 

-- DESCRIPTION: 

return the handle of the view that was opened first of the 
currently open views of this myfolder object. 

BOOL setFirstViewHandle( HWND hwndView ); 

METHOD: setFirstViewHandle 
-- DESCRIPTION: 

Do special processing on first open of folder 
-- PARAMETERS: 

HWND - hwnd of the first currently open view of this object 
-- RETURNS: 

TRUE - hwnd set successfully 

FALSE - first hwnd wasn’t set successfully 

#****************************************************************************** 
# Specify methods being overridden 

******************************************************************************* 
override wpOpen; 

-- METHOD: wpOpen ( ) PRIVATE 

(X) PUBLIC 

-- DESCRIPTION: 

Do special processing on first open of folder 


( ) PRIVATE 
(X) PUBLIC 


override wpInitData; 

-- METHOD: wpInitData 


DESCRIPTION; 

Set object's detail class to be MYFILE 


( ) PRIVATE 

(X) PUBLIC 


override wpModifyPopupMenu; 

[ -- METHOD: v/pModifyPopupMenu 

i " 

I -- DESCRIPTION: 

Add our extra option to the context menu to close 


L 



( ) PRIVATE 

(X) PUBLIC 


all but first view 


override wpMenuItemSelected; 


Printed on 08/01/94 at 17:02 


2 







Files MYFOLDER.esc 03/22/94 14s26 


Objects of MYFOLDER class have concurrent views set on 
by default 

#************************************************************ ************ 

# Define class methods 

I************************************************************************ 
HMODULE clsQueryModuleHandle (), class; 

-- METHOD: clsQueryModuleHandle 
-- DESCRIPTION: 

This method returns the module handle of this class. If this is the 
first invocation, DosQueryModuleHandle is called to save the handle 
for future invocations. 

-- RETURN: 

0 Unsuccessful 

non-zero module handle 

# Specify class methods being overridden 

ft************************************************************************ 

override wpclsInitData, class; 

-- METHOD: wpclsInitData 
-- DESCRIPTION: 

Initalize the class data 

override wpclsQueryTitle, class; 

-- METHOD: wpclsQueryTitle 
-- DESCRIPTION: 

Return class title for MYFOLDER class 

override wpclsQuerylconData, class; 

-- METHOD: wpclsQuerylconData 
-- DESCRIPTION: 

Return the class icon 

override wpclsQueryDefaultView, class; 

-- METHOD: wpclsQueryDefaultView 
-- DESCRIPTION: 


( ) PRIVATE 
(X) PUBLIC 


( ) PRIVATE 
(X) PUBLIC 


( ) PRIVATE 
(X) PUBLIC 


MYFOLDER objects will default to details view 


Printed on 08/01/94 at 17:02 


Page 3 




Files MYFILE.def 03/20/94 15s09 


; This file was generated by the SQM Toolkit. 

; FileName: myfile.def. 

; Generated usings 
; SOM Compiler scs 1.10 

; SOM Emitter emitdefs 1.10 

; @(#)emit.c 1.10 10/25/91 14s09s30 [10/31/91] (c)IBM Corp. 
LIBRARY MYFILE INITINSTANCE 

DESCRIPTION ‘MYFILE Class Library - (c) Copyright IBM 1991' 
PROTMODE 

DATA MULTIPLE NONSHARED LOADONCALL 
EXPORTS 

MYFILECClassData 

MYFILEClassData 

MYFILENewClass 

M_MYFILECClassData 

M_MYFILEClassData 

M MYFILENewClass 


1991 



Files MYFOLDER.def 02/1Q/94 08s 27 


; This file was generated by the SOM Compil 
; FileNarae; rayfolder.def. 

; Generated using; 

; SOM Precompiler spcs 1.22 

; SOM Emitter eraitdef: 1.13 

LIBRARY myfolder INITINSTANCE 
DESCRIPTION 'MYFOLDER Class Library' 

PROTMODE 

DATA MULTIPLE NONSHARED LOADONCALL 
EXPORTS 

MYFOLDERCClassData 
MYFOLDERClassData 
MYFOLD ERN ewClass 




Files MYFILE.rc 03/22/94 14s26 


y***************************************************************************** 

* 

* File Name s MYFILE.RC 

* 

* Description : Define Work Place Shell Sample resources and dialogs 

* Copyright (C) 1994 IBM Corporation 

A 

* DISCLAIMER OF WARRANTIES. The following [enclosed] code is 

* sample code created by IBM Corporation. This sample code is not 

* part of any standard or IBM product and is provided to you solely 

* for the purpose of assisting you in the development of your 

* applications. The code is provided "’AS IS", without 

* warranty of any kind. IBM shall not be liable for any damages 

* arising out of your use of the sample code, even if they have been 

* advised of the possibility of such damages. 




#include "myfile.ih" 

POINTER ID_ICON LOADONCALL MOVEABLE DISCARDABLE myfile.ico 

STRINGTABLE 

BEGIN 

ID_TITLE "MYFILE" 

END 

MENU ID_ALARMMENU LOADONCALL MOVEABLE DISCARDABLE 
BEGIN 

MENUITEM ""Sound Alarm", IDM_SOUNDALARM 

END 

MENU ID_OPENMENU LOADONCALL MOVEABLE DISCARDABLE 
BEGIN 

MENUITEM ""open My File", IDM_OPENMYFILE 

END 


DLGTEMPLATE IDD_LASTWORKER LOADONCALL MOVEABLE DISCARDABLE 
BEGIN 

DIALOG "Last Worker", IDD_LASTWORKER, 11, 17, 190, 134, NOT FS_DLGBORDER 
WS VISIBLE 


BEGIN 

CTEXT 

ENTRYFIELD 

PUSHBUTTON 

PUSHBUTTON 

CONTROL 


END 


"Last User:", 100, 64, 112, 50, 8, DT_VCENTER 
"", IDC_LASTWORKER, 35,89,90,8, ES^MARGIN 
""Undo", ID_UNDO, 11, 9, 40, 14 
""Default", ID_DEFAULT, 71, 9, 40, 14 
""Help", ID_HELP, 131, 9, 40, 14,WC_BUTTON, 
BS—PUSHBUTTON | BS_HELP | BS_NOPOINTERFOCUS | 
WS_TABSTOP | WS_VISIBLE 


END 




Files MYFC3LDER.ro 03/22/94 14s26 


/A*********************************************************************** 

A 

* File Name s MYFOLDER.RC 

* Description s Define Work Place Shell Sample resources 

* Copyright (C) 1994 IBM Corporation 

* DISCLAIMER OF WARRANTIES. The following [enclosed] code is 

* sample code created by IBM Corporation. This sample code is not 

* part of any standard or IBM product and is provided to you solely 

for the purpose of assisting you in the development of your 

* applications. The code is provided "AS IS", without 

* warranty of any kind. IBM shall not be liable for any damages 

* arising out of your use of the sample code, even if they have been 

* advised of the possibility of such damages. 


AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 

#include "myfolder.ih" 

POINTER ID—ICON LOADONCALL MOVEABLE DISCARDABLE myfolder.ico 

STRINGTABLE 

BEGIN 

ID—TITLE "MYFOLDER" 

END 

MENU ID—CLOSEVIEWSMENU LOADONCALL MOVEABLE DISCARDABLE 
BEGIN 

MENUITEM ""Close Views", IDM_CLOSEVIEWS 

END 


Printed on 08/01/94 at 17s02 







Files MAKEFILE 03/22/94 14;22 


Printed on 08/01/94 at 17s02 


Pag© 1 


*************A**********************A******************************** ******** 

# 

# Work Place Shell Sample makefile 

# 

# Copyright (C) 1994 IBM Corporation 

# 

# DISCLAIMER OF WARRANTIES. The following [enclosed] code is 

# sample code created by IBM Corporation. This sample code is not 

# part of any standard or IBM product and is provided to you solely 

# for the purpose of assisting you in the development of your 

# applications. The code is provided "AS IS", without 

# warranty of any kind. IBM shall not be liable for any damages 

# arising out of your use of the sample code, even if they have been 

# advised of the possibility of such damages. 

# 

^***************************************************************A************ 

1 include .\wpshsamp.inc 

# Dot directive definition area (usually just suffixes) 
***************************************************************************** 

.SUFFIXES: 

.SUFFIXES: .c .obj .dll .esc .sc .h .ih .ph .psc .rc .res 

******************************************** ********************************* 

# Environment Setup for the component(s). 

^**********************************************************A***************** 

SOMTEMP = .\somtemp 
SCPATH = d:\toolkt21\sc 
HPATH = d:\toolkt21\c\os2h 
LIBPATH = d:\toolkt21\os21ib 

1 if [set SMINCLUDE=.;$(SCPATH)] || \ 

[set SMTMP=$(SOMTEMP)] || \ 

[set PATH=d:\ibmcpp\bin;d:\toolkt21\os2bin; . ] || \ 

[set SMEMIT=ih;h;ph;psc;sc;c] 

Iendif 

!if [cd $(SOMTEMP)] 

! if [md $(SOMTEMP)] 

! error error creating $(SOMTEMP) directory 
! endif 
! else 

! if [cd ..] 

i error - Couldn't cd .. from $(SOMTEMP) directory 
1 endif 
Iendif 

# 

# Compiler/tools Macros 

# 

CC = $(CC) /Ge- 

LINK = LINK386 

LDFLAGS = /noi /map /nol /nod /exepack /packcode /packdata /align:16 
DLLLIBS = $(DLLLIBS) som.lib 

^**************************************************************************** 

# Set up Macros that will contain all the different dependencies for the 

# executables and dlls etc. that are generated. 


OBJS = myfile.obj myfolder.obj 

£**************************************************************************** 

# Setup the inference rules for compiling source code to 

# object code. 

|**************************************************************************** 

.c.obj: 

$(CC) -1$(HPATH) -c $< 

.esc.ih: 

sc -v -r $*.csc 

all: myfile.dll myfolder.dll 

# 

# Specific Process Tag 

# 

myfile.ih: $$(@B).csc $(HPATH)\wpdataf.h 

myfile.obj: $$(@B).c $$(@B).ih $$(@B).h $$(@B).sc $(HPATH)\wpdataf.h 

myfile.dll: $$(@B).def myfile.obj myfile.res 

$(LINK) $(LDFLAGS) myfile.obj,$@,,$(DLLLIBS),$*; 
rc -p -x $*.res $*.dll 
mapsym myfile.map 

myfile.res: $$(@B).rc $$(@B).ih 
rc -r $*.rc $*.res 

myfolder.ih: $$(@B).csc $(HPATH)\wpfolder.h 

myfolder.obj: $$(@B).c $$(@B).ih $$(@B).h $$(@B).sc $(HPATH)\wpfolder.h 

myfolder.dll: $$(@B).def myfolder.obj myfolder.res 

$(LINK) $(LDFLAGS) myfolder.obj,,$(DLLLIBS),$*; 
rc -p -x $*.res $*.dll 
mapsym myfolder.map 

myfolder.res: $$(@B).rc $$(@B).ih 
rc -r $*.rc $*.res 





Files DINSTALL.cmd 03/22/94 14s51 


/* */ 

call RxFuncAdd 'SysLoadFuncs 9 , 'Rexxlltil*, 'SysLoadFuncs’ 
call SysLoadFuncs 

if SysDestroyObject("<MYFILE>") than 

say ’My File Example successfully uninstalled,' 
else 

say ’Error, My File Example not uninstalled properly.' 

if SysDestroyObject("<MYFOLDER>") then 

say 'My Folder Example successfully uninstalled.' 
else 

say 'Error, My Folder Example not uninstalled properly. 


Printed on 08/01/94 at 17s03 


Pag© 1 





/* V 

call RxFuncAdd 'SysLoadFuncs'# 'RaxxUtil'# 'SysLoadFuncs' 
call SysLoadFuncs 

parse arg libdir 

/* change following drive letter to your boot drive */ 
if (libdir * ••") then libdir = "C:\os2\dll" 

’copy myfile.dll* libdir 
’copy myfile.syra* libdir 
’copy myfolder.dll* libdir 
'copy myfolder.sym' libdir 

if SysCreatoGbj ect { “MYFILE", "My File Example", "<WP DESKTOP*-"# , 

"SOUND 38 YES • OBJECTID=<M¥FILE>" ) then 
say 'My File Example successfully installed.* 

else 

say 'Error# My File Example not installed properly.’ 

if SysCreateObject("MYFOLDER"#"My Folder Example","<WP_DESKTOP>" 

"OBJECTID=<MYFOLDER>") then 
say 'My Folder Example successfully installed.• 
else 

say 'Error# My Folder Example not installed properly.' 


Printed on 08/01/94 at 17s03 


1 








Understanding the GPI 

Exploring and Exploiting OS/2 Graphics 


Kelvin R. Lawrence 
IBMCorpo ration 
Boca Raton, FL. 


Todays Agenda 

■ Quick <3 PI overview 

■ A word ori presentation spaces 

* Key concepts with working examples: 
~ Geometric widelines 

- Polygons, arcs and full arcs 

- Coordinate spaces and transforms 
~ Working with fonts 

- Paths and ciipping 





OS/2 Presentation Manager GPI. A 
Programming Guide to Text, Graphics 
and Printing. By Graham Winn. 
Published by Van Nostrand Reinhold, 


The following terms are trademarks or rigtetered trademarks of 
the IBM Corporation in the United States and/or other countries. 

• IBM 

* OS/2 " ' . .. j 

• Operating System/2 . 

. Presentation Manager ■ 

. WtN-OS/2 

* Workplace Shell 

. The following terms are trademarks of their respective 
companies. 

♦ Windows 


• Presentation Manager Programming 
Reference, Volume 1. (Part of OS/2 Tech. 
Library). S10G-6624 









Reference Material 

1 ■ OS2DF1 (OS/2 Developers) forum on 
CompuServe 

* Articles in PC Magazine by Charles 
Petzold and others 

■ Developer Connection News and 
CD-ROM 


What is the OS/2 PM GPI ? 

x ■ GPI = Graphical Programming Interface 

■ Rich set of graphics routines for 
applications to utilize 


■ Largely device independent! 


m mm mm 


Reference,,Materia 


■ OS/2 beveloper magazine 

• IBM International Technical Supppjil 
Center "Red Books" 

» Or»..„You can reach me (Kelvin) via: 

- CompuServe: 72360,3554 

- internet: lawrence@vnetibm.com 


The GPI also prhvicles..^ 

■ A very comprehensive 2-D imaging 
model. 

» A lot more than we can talk about ip One 
and a half hours! 


But. J will be here all week so things we 
don't cover here today we can discuss at 
other times during the week (you can’t 
get rid of me that easily!}. 



You car) think of the GPI as providing 
Various classes (or categories) of graphics 
functions. 


By combining one or more categories of 
these functions we can q. u| i l^p iiSiilill|l 
build sophisticated graphics into our 
applications. 


Fiirieflcm Classes. 


■ The Gpi provides functions for: 

- Building more complex shapes 

► Regions 

► Areas 
. * Paths 

► dipping 

- Transforming data 

- Translate 
| Rotate 

- Scale 
* Shear 



The Gpi provides functions for: 

- Saving the data 

> Metafiles 

► Retained graphical segments 


Manipulating text and fonts 


The GPI provides functions for: 
if- Setting/querying attributes 
► Colors 


* Fills, etc. 

* Drawing basic primitives 

► Lines, arcs and curves 

► Boxes 

► Polygons 

* Bitmaps, etc. 


Printing the picture 













i Logically where the application draws 
> 3 basic types: 

- Micro cached (WipGetPS) 

- Micro (GpiCreatePS - GPlf_MICRO) 

- Full (GpiCreatePS - GPIT.NORMAL) 

* Very close mapping to a device context 


ittjh 


< A sit of <^Pi concepts with examples 
■ Concentrating on: w 

- Drawing wideiines, fiiil arcs, partial! 
arcs 

- Drawing polygons 

- Coordinate spaces and transforms 

- Generating a complex clip path 


- Drawing a 256-color bitmap 

- Performance 


Offers a variety of PAGE units 
IPUPEL3 

- PU_LOMETRIC (0.1 mm) 

- PUJftMETRJC (0.01 mm) 

- PU„LOENGLISH (0.01 ipchis) I 

- PU„HIENGLISH (0.001 inches) 

- PUJTWIPS (1/1440 inches) 

- PU_ARBiTRARY (matches device) 
Example: TEST1.EXE 


Tirnittves 


Basic attributes (some examples) 

- GpiSetColor( hps, CLR_RED) 

- GpiSetBackColor( hps, CLR_BLUE) 

- GpiSetBackMix( hps, BMLOVERPAINT) 

- GpiSetCurrentPosition( hps, pptIPoint) 

- GpiSetLineType{ hps, 
LINETYPE_SOLID) 

- GpiSetMix( hps, FM_QVERPAINT) 

- GpiSetPattern( hps, 

PATSYM HALFTONE) 




■ Simple* lines 

- GpiLine( hps, ppdintl) 

- GpiPolyLine( hps, ICount, aptl Points) 

- GpiPolyl_ineDisjoint( hps, 

ICount, aptIPoints) 


» Draws one or more lines, starting at the 
current position or from first coordinate 
(in the case of disjoint lines) 


■ Geometric widelines 

- Generate using a path 

- Can specify line end style 

- Can specify line join style 

(f 

-Example: WIDEI_N.EXE 


■ Wider lines 

- GpiSetLineWidth( hps, 
LINEWiDTH_THiCK) 

- GpiSetLineWidthGeom( hps, IWipth) 

- GpiSetUneJoin(hps,LINEJOIN_ROUND) 

- GpiSetLineEnd( hps, 

LINEEMD_ROUND) 


Geometric line widths need to he used 
in conjunction with a path to generate a 


nfrodyciji.gr Some <3PI Primitives 

■ Drawing Polygons 

- Use GpiPoiygons' 

1 - High speed polygon rendering 
~ Draws one or more filled polygons 

- No need to generate using paths or 
areas 

-Polygons can be disjoint, i.e. not 
connected 


- Example: POLYGON.EXE 












Full arcs 

- Generate using GpiFullArc 
|jCan adjust using QpiSetArcParan?4 


Example; CIRCLE.EXE 



■ Various coordinate spaces are provided 

- World 
.--■Model/ 

- Page 
-Device 

■ Different transformations can be applied 
at different stages of the coordinate 
space pipeline 


Partial arcs 

- Generate using GpiPartialArc 
-Can adjust using GpiSetArcParam^ 




Available transforms 

- Model transform 

► GpiSeiModelTrmsformMatrix 

- Viewing transform 

► GpiSetViewingTransformMatrix 

- Default viewing transform 
*- GpiSetDefaultViewMatrtx 

- Device transform 

► GpiSetPage Viewport 























Viewing Limits 



Graphics Fteldi 


Model Xform 



ililiiii 







iillpifil 









Model Xforrp 


Viewing Xform & 
Default Viewing Xform 


m$pm 


Page Viewport . 

• (Device Xform) | 


Viewing Limits 


• Clip path - world space 

- Inclusive/Inclusive, can include curves 
■ Viewing limit A model space 

- Inclusive/Inclusive, rectangular 
» Graphics field - page space 

- Inclusive/Inclusive, rectangular 

* Clip region - device space 

- inciusive/exciusive, one or more rects. 

- Device dependent 



m 








Seal i ng/Ref lection use Ml 1 & M|2 



Transforming a point 


Note, if working in PELS, by default, all 
transforms start Cut as identity. 
Otherwise, the default transforms 
provide the mapping from world space 
to device space. 


fxMH 

fxS 

mmm 

fxl 

IM31 

IM: 















Coordinate Spaces and Transforms 

; ■ Translation 

- Adjusting position where object is 
drawn 

- Example: XFORM1.EXE 


viewing transform 


■ Side note: For speed, the graphics 
engine caches the following transfr - 1 
-World to model 

- Viewing transfr 

- Default (global) 

- Page to device 

- World to device 

- Device to world 

- Plus, tRU of last two transforms not in 
above iist 








With OS/2 are included a selection of 
image (bitmap) fonts and Adobe Type 1 
(Outline) fonts 


Introduction bitmap vs. outline fonts 
Common font teriminology 
Querying available fonts 
Creating logical font* 

Character attributes 
Calculating spacing 
Outline font text as clip-paths 
Vector markers from an outline font 


Other fonts can be added to the system 
dynamically 



■ Should only be used for "on screen" 
displaying of text 

* Are not scalable (set of fixed point sizes) 

* Their size is approximate for general 
display resolution 

- Limited flexibility 


■ Decide up front if your application is a 
"screen only" application or if you are 
going to want to send output to other 
devices such as printers; and plotters 

• This will dictate the way you do your' 
font handling in your application 








Genera) use 
-Screen 

- Printer;* etc •.- 

Can be sized accurately with graphics 
Flexible uses 

^'j^MlUnes 

- Fills 

- Transformations (rotate, shear, etc.) 

- Clip paths, etc« 


Device fonts are provided by a device or 
a device driver 

- IMatch value will be negative 

- Not available for use on other devices 
A Generic font is a system managed font 
that can be used on any device 

- IMatch value will be positive '? 

- Can be an image or an outline font 


Can achieve a proper transfer of what’s 
on the screen to the printer 
















Offering the User a List of Foots 

i ■ The system fortt dialog 

vr ’- Displayed using WinFontDlg(...) / 

- Provides a uniform way to present lists 
of fonts to select from to the end user 

- Removes work from the application 


ill? 


table Foot Interface (IF! 


The OS/2 graphics engine provides an 
installable font driver interface 


Font drivers for different font 
technologies can be written and added 
to the system dynamically 

An Adobe Type Manager font engine |j 
comes with OS/2 as standard 



WinFontDig (Minimalist Approach) 


FONTDLGffd; 

CHAR pszlitle[17] = "Font Dialog Test”; 
CHAR pszFam 08 yName[FACESIZE] = "\0"; 

nnemset( &pfd, 0, sizeof( FONTDLG )); 

fd.hpsScreen = fopsCBsemt; 
fdcbSize = sizeof( FONTDLG ); 
fd.pszFamiSymame - pszFamBByName ; 
fd.pszTitle = pszTitle; 
fd.usFamifiyBuffLen = FACESIZE; 
fd.fxPoimtSize = (RXED)O; 
fd.cIrFore = CLR_BLACK; 
fd.cIrBack = CLRWHITE; 
fd.pszPreview = ’’SampSe Text"; 
fd.fi = FNTS_CENTER; 


WinFomtDBg( iiwndFrame, hwndFrame, &fd ); 













Example: F0NT1.EXE 


Key things to provide in fattrs parameter 

- Size (of fattrs structure) 

- Facename 

- Codepage 

► Non language font use 65400 - Le., 
dingbats 

- Image fonts 

► MaxBaseiineExt, lAveCbarWidtb 

- Outline fonts 

» FATTRS FONWSE OUTLINE 


■ Query available font? 

■ Select required font 

■ Call GpiCreateLogFont 

■ Select the character set as the current 
one • 

- Set character box size (if outline font) 
* Example: FONT1.EXE V 


displaying the Text 

■ WinDravyText (display only) 

■ GpiCharString 

■ GpiCharStringAt 

■ GpiCharString Pos 

«GpiCharStringPosAt 



Character Mode 

• Set Using GpiSetCharMode 
' - Mode 1 (CM_MODE1) 

- ignores all attributes except direction 
... Mode 2 (CM_MODE2) 

- Uses character shear, box, angle and 
direction, but the characters 

* themselves are not sheared, rotated 
llillMiBIll Jlllllll JlllllllI 
- Mode3(CM_MODE3) 

~ Obeys all attributes 

- Outline fonts only 



Set using GpiSetCharBox 
Used for sizing outline font characters 
Defines horizontal and vertical spat# 
occupied by an em square 





















Set u§iag GpiSetCharDirection 
Available directions 

-chdirntdefault 

~ CHDJRNJJEFTRIGHT 

- CHDiRN_RIGHTLEFT 

- CHDIRNTOPSOTTOM 
BiMlN BOTTOMTOP ,• • 


Set using GpiSetCharAng le 
Defines angle at which text is drawn 
- I.e., defines the angle of the baseline 
Actual appearance of the text is 
determined by the charaetlr ji o||i ll 


Set using GpiSetCharShear 
Appearance of the text is dictated by the 
current character mode 



■ Set using GpiSetCharExtra 
• Defines extra space between character 
cells J It 11| 111 . . /•••• -. ..A 


Character Gotor- arid Mix 

; ■ Can use regular color/mix functions 

- GpiSetColor 

- GpISetBackColor 

- GpiSetWIix 

- GpiSetBackMix 

■ Can adjust just the character bundle 

- GpISetAttrs (PRIM^CHAR) 



■ TEST1.EXE - A program that 
demonstrates character manipulation 














■ For irn|3f fonts 



Oytlifie Foot Sizing -Device Coords 

u ■ Some general typesetting terminology 

- 12 points = 1 pica 

- 6 picas * 1 inch (actually 0.9661 
inches) 

- 72 points b 1 inch 

- 1 inch = 2.54 cm 

- 1 inch = 0.0254 m 


For outline fonts 


■ Do NOT use IMaxBaselineExt 

- May be wildly inaccurate 

- Consider adding an integral sign to a 
font 

* Good first approximation is 1.2 x point 
size 

■ However, depending on point size, line 
spacing should be chosen for a visually 
pleasing look 


Outline Font Sizing - Device 


1. Choose point size required 


2. Use following algorithm 
pt = selected point size 
| ctev s device graphics resolutions 
(peis/meter) 

mi * 0.0254 (meters/inch) 

• •••• ip « 0.9961 172 (inches/point) 


Set character box to: pt * dev * mi * ip 








Fonts., Paths aod Qlipping 


Define a path 

Make clip path using GpiSetClipPath' 
- Example: CLIPFNT.EXE 


Presentation Parameters 

■ Quick and easy way to change the 
default font for a window or control 

- PPFONTNAMESIZE 
;P - e.g., 12.Heivetica 

■ Set using WinSetPresParam 
• Can be a little more exotic 

ilBIlliilli. Hel vetica.bold.ital ic 


Fonts and Sector Maikms 



Two examples 

- Displaying the contents of the palettf 
| Animating the palette 


- Example 2: PMPAL.EXE 

- Example 2: PALETTE.EXE 









Bitmaps 


' Specific case Study 
-Load a bitmap from disk 

- Read the palette from the bitmap 

- Display and size the bitmap 

- Example: BITMAP,EXE 


Perkwmmw^ 


■ Depends upon efficiency of 

- Application 
^presentation driver 

- Hardware 

• Can use large arrays of points if needed 

* Understand underlying presentation 

driver model 


- Example application that uses 

- Disjoint polylines 
-Polygons 

- Animated palettes 

-TttreadS V •- 

-Transforms 

- Performance concepts 

* MOUNTAIN,EXE (A mountain generator) 












AD11 




Developer Offerings Presentation Overview 

OS/2 Developer Tools 


► Developer Tools Strategy 

► Developer Connection Demo 

Barbara Britt 

Personal Software Products 

Boca Raton, Florida 


► OS/2 Toolkit Demo 

► OS/2 Multimedia Toolkit Demo 

► Device Driver Kit Demo 

Migration Strategy 

► HyperWfse Demo 

► Overview of WP - OS/2 Tools 

9 






OS/2 Developer Offerings 

Strategic Directions 

WortdVifafe 

« Delivery ©f developer fools, service, 
and support to an international 
audience of developers, ISVs, and 

IHVSo 

• of feats Sc . 

• Delivery of 2.x and OS/2 for PowerPC 
developer tools, documentation, beta 
code, and advance information to the 
developer community on a timely 
basis. 

llippc ••••-•• * 

® Support of Industry Standards 
(GORBA, Tool Interface Standards 
(US) Committee, OSF, ISO, etc.) 


7/28*4 


OS/2 Developer Offerings 

Strategic Directions 













Encourage application development 
on IBM Personal Operating Systems 




Independent Software Vendors (ISVs) 
and Application Developers 




One year of updates 



Mg? Technical 

jip Support 

CompuServe, 
||P' and Internet 


$199 

(US) 


THE DEVELOPER CONNECTION FOR 
OS/2 



'.I 

BY THE DEVELOPERS 

• :K: 

-mtmM " 

-BOOK TOVIEWS Y •- 
ENCE NEWS 

-80$ NUMBER DIRECTORY 


TOOLS: 


- LATEST DEVELOPERS TOOLKIT 

- IBM BETA CODE 

- THIRD-PARTY BETA CODE 

- LATEST DEBUG KERNELS 

- DEMOS/PREVIEWS OF NEW TOOLS 

- ONLINE BROWSER 


INFO: 

- TECHNICAL LIBRARY 

- RED BOOKS 

- WHITE PAPERS 

- TOOLS & PUBS CATALOG 

- APPS & PUBS CATALOG 


THE DEVELOPER CONNECTION FOR OS/2 
CONTENT 


- Bit-maps 

- Communications Tools 

- Development Tools 

- Editors 

- Multimedia Tools 

- OS/2 Beta's and Demo 

- Productivity Tools 

- Service 


- Source Code 

- Test Tools 

- On-Line Documentation 

- LAN Systems 

- Data Base Products 













































THE DEVELEOPER CONNECTION FOR OS/2 

CATALOG FEATURES 

► Complete Content List 

► Tool - Option 
“Try Product 

- Install Product 

Ca 

o „ 

3 


- information 

- Remove Product 

(A 

Catalog 


► Zoom 

► Expand / Collapse 

► Product information 
-Mew 

- Updated 

Q O _ 

A 

7\ 




\ -cm#* J 




72094 


THE DEVELOPER CONNECTION FOR OS/2 
BROWSER FEATURE 


► Search 

- Multiple keywords using 
boolean operators: AMO, 
OR, XOR, & MOT 

“Wild card support 

► Configurable 

► Error Checking 
b> Workplace Shell 

Integration 

- Drag and Drop 

> Desktop 

> Printer 

> Create another folder 


> Browser Folder 

- Logical Categories 

- Search all objects in 
folder 

► Language Sensitive Editor 

- Context sensitive pog>up 
menus 

- Spell checking 




THE DEVELOPER CONNECTION FOR OS/2 

SUPPORT 

► Electronic Support 

- Compuserv 

► ON GO OS2DF2 

- DevCon CFORUM 

► OS/2 BBS under 
Talklink 

- internet 

» devcon@ 



vnetsbm.com 

f 

7 \ 

«Sptcft2pr» 

& ^ 

v_ 




















THE DEVELOPER CONNECTION FOR OS/2 
ON-LINE DOCUMENTATION 


► Previous issues of 
Developer Connection 
Mews 

► Device Driver References 

► REXX References 

► SOy References 

► PM Programming 
References 
Tools Reference 

► IFF Reference 

► OPEM DOC 




► Communications 
Manager’s Reference 

► IBM Red Books 

► IBM Application Design 
Guide 

► White Papers 


H 




OS/2 Toolkit 


Enable development of OS/2 compatible program products by IBM 
| internal and third party software development 


Independent and IBM software developers 



Technical 
Reference Library 


Technical Support 
via OS/2 Service 
Organization and 
BBS (future) 


$139 

(US) 


BUILD TOOLS AND DEBUG SUPPORT 



BUILD TOOLS 

- NMAKE 
-MKMSGF 

- MSGBIND 
-EXEHDR 
-MARKEXE 
-IMPLIB 
-PACK 

- LINK386 

- FWDSTAMP 



DEBUG SUPPORT 
- Default Kernel 





















UT1LSHES, LIBRARIES, AND HEADERS 




ON-LINE INFORMATION 





/ : : O BAMTOJ£S \ 
/HEXX SAMPLES \ 

/ Cn [MSKi- \ 
MOL5rtM6blASA«fil£S\ 


C SAMPLES 

► SOM INHERITANCE (ANIMALS) 

► BIDIRECTIONAL (BIDJ) 

, ► CLIPBOARD (CUPBRD) 

Y TIMER SERVICES (CLOCK) 

V PM DIALOG BOX (DIALOG) 

“V DYNAWiC UNK LIBRARY ABI (DLL API) 

L DIRECT MANIPULATION (DRAGDROP) 

/► EXTENDED ATTRIBUTES EDITOR (EAS) 

► MULTI-THREADED PM SAMPLES (GRAPHIC, HANOI) 

► MIGRATE 16-BIT TO 32-BIT (IMAGE) 

► INFORMATION PRESENTATION FACILITY (IPF) 

► BITMAPS IN GRAPWC APPS (JIGSAW) 

► NAMED PIPES (NPIPE) 

► PALETTE MANAGER (PALETTE) 

► PM PRINT (PRINT) 

► 32-BIT QUEUING (QUEUES) 

► MUTEX AND EVENT SEMAPHORES (SEMAPH) 

► MULTIPLE SORTS USING THREADS (SORT) 

► SAVE AND EDIT TEXT FILES (STYLE) 

► PM TEMPLATE (TEMPLATE) 

















i Multimedia Libraries & 
Headers 

i Multimedia Samples 
® String Test 
® Clock 

® AVC I/O Procedure 
Installation 
® Duet Player 1 
® Duet Player II 



• Audio Recorder 

• Caption Create Utility 

• Caption Application 

• Movie 

« Control File Template 




SUluStimedSa Subsystem Development Samples 

• Media Control Driver Template 

• Waveform Audio IWledia Control Driver 
® CD Media Control Driver 

® Media Control Driver Command Tables 
® File System Stream Handlers 
® Stream Handler Resource File 

• Toolkit Control Files 

® Case-Converter I/O Procedure 
® M-Motion I/O Procedure V , 

• UStimotion I/O Procedure ^ 


















































DEVICE DRIVER SOURCE KIT 


m Announced 5/25/93 
e $199.00 for full year 

• includes one year of updates 

• includes one year of technical support 

• Each CD-ROM is cumulative 

■ Order by calling 1-80O-6DEVCON (633-8266) 


prt 7-28^94 




Application Migration Strategy 














Hyperiv/se an Online Editor for OS/2 




Hyperw/se- MultiMedia 


► FEATURES 

- Key productivity tool for OS/2 App 
Development 

- Part of migration strategy 

► Cross platform access to help/integrated 
on-line information 

- HyperWrite, IFF import, SookMaster import, 
INF/HLP native export, SPF export, BookMaster 
export, Install program, IPF/WIN, on-line 
documentation 












































ADI 2 


Agenda 


ADI 2: OS/2 Debug Kernel 
"Hands-On Lab" 


* The "Debug Kernel" 

► Very Brief Overview of System Architecture 

► Debugger Commands 

► More information 


Dennis Sposato 

IBM Corporation, Boca Raton FL 
OS/2 Technical Support 


The "Debug Kernel" 

► OS2KRNL 

► Communicates via COM Ports 

► Defaults 

9600 baud 
8 data bits 
1 stop bit 
Ho partly bits 
COiyi2 


The "Debug Kernel" 


■ Local Debugging 







IgwHuM 

Null Modem Cable 

PPPP 


MUT 

Machine Under Test 


Debug Terminal 













The "Debug Kerner 


The "Debug Kernel" 


■ Remote Debugging 



■ KDB.INI - Initialization file 

- Used to change defaults 
ie: 

.b 2400! 1 Set speed on Coml 
© 3FC 1 Set DTR for Coml 
g Go 

■ WARNING 

No carriage return fine feed at end ©f file 


Very Brief Overview of System Architecture 


Very Brief Overview of System Architecture 


■ Protection 

Privilege 

Description 

Address Mapping (paging) 

a Addresses 

Selector or Segment 


■ Selectors 

Index into Descriptor Tables 


■ Descriptor Tables 

Describe memory 
GDI DG Command 

LDT DL Command 


Offset 































Very Brief Overview of System Architecture 

» Call Gates 

Prfvfege Level Transitions 


Debugger Commands 


G 

BP 

VS 

VL 

BL 

BR 

DL 

DG 



Set Breakpoint 
Set Vectors 


List Vectors 


List breakpoints 
Set debug register 
Display LDT 
Display GDT 


Debugger Commands 


► ? Display command list 

► .P Display Process List 

► .PB Display Blocked Process list 

► R Display registers 

► „R Display Registers at Ring 3 

► LN List Near Symbol 

► .? Display external command list 

► DB Display bytes 

► DW Display Words 

► DD Display Double Words 


Information 


For more information on system architecture see: 

"Intel486 Programmer's Reference Manual" 

For more information on OS/2 architecture see: 

"The Design of OS/2 by Deitel & Kogan" 

For more information of how to debug in an OS/2 environment 
there is a class available from IBM called "OS/2 Hang/Trap 
Analysis Workshop", PI082. Call or Internet mail to: 

Judy Lee (407) 443-0488 


!eejudy@bcrvm1 .vnet.ibm.com 






C Set ++ 

Agenda 

- The C Set ++ Family 

- Target Audience & Key Messages 

- C Set ++ Success Stories 

- Detailed Product Overview 
• C Set ++ V2.1 

- Competitive Advantages 

- Future Releases 















"We provide the preferred language-centered C/C** environment for developers 
who are building applications using a standalone or LAN-attached workstation, 
targeting a variety of runtime environments." 

New functions; Enhanced functions 
Expanded segment coverage 
Idmplementary functions • 

Expanding number of supported platforms 



CS&i ++ Products 


C Set ++ for OS/2 V2.1 

® Latest version of our full function product, targeted to industry 
professionals 



Future Releases: 








C Sot ++ 

Product Overview 
C Set ++ V2.1 





C76*+ Tcote 

* C/G4+ Comber • 

»Debugger 

*EXTRA 

* Browser 

«Standard CfasS library 

* Collection Class Library 

* gtihartcHci out Class Library 

* Kasa:Se« Tool 

V2.1 • I #11111111 

W<W«»W*/2 Vt-1 

■MHiMHi 


C Sot ++ 



Target Audience 


OS/2 Application Developers 

► C Set ++ 

- Enterprise professionals 

► MIS 

► Development teams 

- ISV professionals 










C Set ++ 

Key Messages ~CSei++ 

► Allows developers to create ’'mission critical" applications 

- "More than just a slick user interface" 

- Every release undergoes thorough testing (more than 10M lines of test code) 

- Content of compiler and related tools is state-of-the-technical-art 

- "Created by developers for developers" 

► Allows developers to keep pace in a rapidly changing, highly competitive environment 

- Programmer productivity increased through use of object-oriented paradigm 

- Class libraries provide a common base from which reusable parts can be built 

Generates highly optimized code 

- Global optimization (with no "unsafe" optimization) 

- Code scheduler allows developer to exploit i486 and Pentium* instruction sets 

- Function inlining 

► Ss backed by Service and Support second to none 

- Track record established with C Set/2 

- Immediate access to C Set++ development team 

- "We know C and C++" (team creates compilers for all hardware platforms) 



(’) Trademark of the Intel Corporation 


C Set ++ 

Success Slones 



^ C Set ++ has 40,000 customers Worldwide 

►- C Set ++ is used to create: 

- Popular Desktop Applications 

- Object Oriented Client/Server Applications 












C Set ++ 

Success Stories 



► Popular Desktop Applications 

- Lotus 123 for OS/2 

- Lotus Freelance for OS/2 

- Lotus Notes 

- Lotus AmiPro 

- Describe 

- DB2/2 

- OS/2 


C Set ++ 

Success Stones 



» Object Oriented Client/Server Solution 

- Case Study: A Credit Company in US 



600 GB Host 
data base 








7500 OS/2 V2.1 
Clients 


Client code written 
Iflii in C Set ++ 

"We could not 
have done this 
without C Set ++ 
and OO” 
























Product Overview - C Set ++ V2.1 



C/C++ Compiler 

✓ A State-C:b tbs-C«ft. 

robust standards¬ 
conforming compiler 
for 0 and C++ 
applications 

C++ Class Browser 

v A visual tool for 
working with C++ 
class structure and 
inheritance 

Execution Analyzer 

v A visual tool for 
analysing, timing, and 

tuning compleH C and 
C++ applications 

Developer’s Toolkit V2.1* 

✓ Utilities (®.g. linker, make) 

✓ PM resource tools 

✓ 0/S header file* 


* new feature for Version 2.1 


C++ Class Libraries 

v PM User Interface classes 
(including DragDrop classes)* 
✓ Base set of C++ classes 
from which reusable 
objects can b© derived 

PM Debugger 

* A visual tool for 
debugging C and C++ 
applications 

WorkFrame/2 V2.T 

v' Full WPS integration 
Open and configurable 
integration framework 
v Seamless integration 
of reultiple/d itferent 
E/C/D tools 
. Reject organiser 
✓ Launches AD tools 


C Set ++ 



C/C++ Compiler 

> 32-bit C/C++ compiler generates code targeting OS/2 

► Generates highly optimized code 

- No "unsafe" optimizations performed 

► C++ compiler supports: 

- Templates 

- Exception handling 

- Pre-compiled header files 

► C compiler now supports 

- Virtual Device Driver (VDD) support 

- Pre-compiled header files 

- performance improvements 

>32-16 bit coexistence 

> Conforms to: 

- ANSI/ISO C (NIST validated) 

- ANSI C++ draft 

- Japanese MIA 

> Compatibility 

- Cfront 

- Microsoft 


IS 



























C Set ++ 

C++ Class Libraries 




► Assists developer to: 

- develop production applications quickly 

- reuse existing classes across many applications 

- create PM applications without the need to know the details of PM 

- create a consistent set of classes derived from a common base 

►- User Interface Class library 

- Encapsulation of OS/2 PM 

- CUA '91 "Look and Feel" support 

- New Drag/Drop classes 

► Collection Class library 

- Abstract data type building blocks (e.g. stack, tree, etc.) 

- Utility building blocks (e.g. ordering, equality, access, etc.) 

► Standard Class library 

- iostream 

- task 

- complex 


C Set ++ 


C++ Class Browser 




► Assists developer to: 

- search applications for specific components 

- view components and their relationships 

- understand code 

- edit original source code 

► Post-compilation static analysis 
►- Graphical user interface: 

- List windows 

- Graph windows 

- Text windows 

► View class structure and inheritance 































C Set ++ 

PM Debugger 



► Assists developer to: 

- debug PM applications 

- debug applications with multiple threads 

- monitor PM message queue 

► Full graphical user interface 

► C++ support features 

► Source Level Debug 
«- Step Mode Debug 

- Graphical window analysis 


C Set++ 

Execution Trace Analyzer 



► Assists developer to: 

- Time and tune complex applications 

- Analyses program hangs 

- Monitor multi-thread interactions 

- Understand code 

► Monitors program execution 
Presents data in graphical format 

- Statistical summary 

- Timeline analysis 

- Execution density 

- Call trace & Call tree 
































C Set ++ 

Workframe/2* 




f=\ 


> Assists developer to: 

- Develop code using their own choice of tools 

- Mix and match their favorite vendors’ tools 

- Combine tools through a simple, yet powerful user 
interface 

Open tools integration shell 

- Full WPS integration 

- Published interfaces 

- Supports DOS, Windows, or OS/2 tools 

- Multiple vendors supporting 

Project organization 

- Manages project files 

- Project profile 

- Action log 

> Resource tools 

- Graphical build tools 

- PM resource tools 

- Libraries and utilities 


C Set ++ 

Support and Service - C Set ++ 



► CompuServe 

- preferred non-defect support mechanism for OS/2 

- free trial membership included with product 

- converse directly with C Set ++ developers and planners 

- download files 

► internet 

- converse with developers across the Internet 

- download files 


WS i AH* ■HAT-.'tj. 


























C Set ++ 

Support and Service - C Sei ++ 


► Fax service 

- 416-448-6057 

- direct to developers/planners 

Other Resources 

- Service Manager - Maxine Houghton (MAX @ TOROLAB6) 

- Planning Manager - Alistair Rennie (ARENNIE @ TOROLAB6) 

- Marketing Brand Manager - Roy Mular (MULAR @ TOROLAB2) 


C Set ++ 

Support and Service - C Sei ++ 
Additional Offerings 

> Communications 

- C Set ++ Newsletter 

- Mailings through our customer database 

- Electronic postings 

► Customer feedback opportunities 

- Worldwide beta programs 

- Evaluation drivers 

- Frequent product surveys 

- Customer satisfaction surveys 

Marketing Support 

- Customer Briefings 

- Brochures, Direct Mail 








C Set ++ 

Competitive Advantages 


» c Sot ++'$ primary competitor is Borland C++ for OS/2 
► C Set ++ has maray advantages: 


PM 


Classes 



EXTRA j 

ANSI 

Standards.' 


■ ' Open ' , Service/ 

i. IDE J v Support 



C Set++ 

-X<«vX , y. , X , X<>X , X , X«-XswX , XwXwl , lsvXsw'.-XOXw'.s««'X"lwX«*X«s , X<wWw;vXs«*i 

Competitive Advantages Notes: 



► Fastest EXE’s: C Set ++ produces the fastest executing applications for OS/2 2.x. Additionally, the 
design point of the compiler focuses on the production of the highest quality code, with SAFE 
optimizations. This is a compiler that customers can trust with their mission critical code. 

► PM Classes: Only C Set ++ provide a complete set of User Interface class libraries for Presentation 
Manager. These classes offer the most productive way for creating OS/2 GUI applications. 

► EXTRA: C Set ++ is the only product available for OS/2 to provide a complete visual performance 
tuning tool. 

► Solid Debugger: C Set ++ customers report that IPMD is the most stable, powerful debugger 
available for OS/2. 

► Service and Support: IBM provide frequent service updates for C Set ++. Other competitors do not 
provide this level of support. Also. IBM has an entire team devoted solely to Service and Support. 
We are committed to OS/2 developers. 

► Open IDE: Workframe/2 allows developers to integrate their own tools into the development 
environment very easily. Because C Set ++ is running on OS/2, these tools could be DOS. 
Windows or OS/2 based. 

ANSI Standards: IBM is an active participant on the ANSI C++ Committee. C Set ++ has set a 
standard for being compliant with the ANSI definition of the language. 









C Set ++ 


Migrating to OS/2 



>-16 bit to 32 bit 

- C Set ++ supports 16 to 32 bit and 32 bit to 16 calls 

- Allows reuse of existing 16 bit code within new 32-bit 
applications 

i- Compiler Options 

- Support for non-ANSI extensions (Microsoft) in the C 
language 

Recompile for 32-bit 

- C Set ++ will recompile existing source to 32-bit 


C Set ++ 


C Set ++ Delivers 




Benefits 


"Functions 
and 

Features" 

















Clleni/Server Development 



Futures Overview 
























C Set ++ 


C Set ++ for OS/2 Version 3 


Compilers (C/C++) 

- Compiler Performance 

- Optimization (Size and Speed) 

Linker 

- New linker! 

New Browser 

- Performance 
SOM 

- Full Direct to SOM support (compiler and tools) 
Runtime Enhancements 

- Performance Improvements 
Class Library Enhancements 
Visual Builder 

LPEX Editor 

- Syntax highlighting, programmable 

Integration 

- Improved tool-tool integration, integrated install 


... 














C Set++ 


C Set ++ for WPOS/PPC 


C/C++ Compiler 
Runtime 
Debugger 
Collection Classes 
User Interface Classes 
lostream Class 

- Natively Hosted 

- Delivery will evolve through Alpha and Beta 

SDKs 

- Over time Function will converge with C set ++ 

for OS/2 


C Set ++ 

Windows 32BH Support 


Proposed Strategy 

- Provide OS/2 hosted cross-compile to Win32s 
and Win32 
-» Natively host: 

. Debugger 
« Collection Classes 
o User Interface classes 










C Set ++ 

Futures Overview 


Leading Object Oriented Tools 
Best of Breed Class Libraries 
Full Enterprise Client/Server Support 


C Set ++ is the premier choice for 00 
development on OS/2 ! 




CC02 


CC02 IBM C Set++ 
Debugging Tips and 
Techniques 

David Kolpek 
SBM Lexington 


Subject overview 

■ History and design goals 
- Function overview 

■ Usage notes 

« Release 3 Enhancements 

■ Advanced topics 



C Set++ Debugger 


Design goals 


Function summary 


■ Debug C Set++ C and C++ code 

■ Debug C Set/2 C code 

« Run as a PM application 
- Point and shoot mouse operation 

■ Unofficially support 16 bit debugging 

■ Run on all OS/2 2.x releases... 


- Source views 

- Execution control 

- Breakpoints 

■ Monitors 

■ Expressions 

* Message queue 
monitor 

- Exception handling 


Call Chain 
Storage 
Registers/flags 
Debug session controls 
Customization 
Window analysis 
Toolbar buttons 
Heap checking 


C Set++ Debugger 


C Set++ Debugger 



Source Views 


Execution control - Step 


« Multiple view support 

- Notebook (C++) 

- Source view 

- Disassembly 

- Mixed (source + disassembly) 

® Highlighted lines and breakpoints are reflected in all 
open views 

= Executable lines are colored blue, non-executable Sines 
are black 


- Step over 

• Stops in called function if BP hit 

• Also available on mouse button 2 

- Step into 

• Follows execution into functions 

- Step debug 

• Steps into if debug info present, steps over if debug 
Info is not present 

- Step return 

• Runs through next return statement 

- All threads execute when stepping 


C Set++ Debugger 


C Set++ Debugger 


Execution control - Run 


Breakpoints 


- Run - allows all enabled threads to execute. Control 
returns to the debugger when: 

• The program terminates 

• An enabled breakpoint is hit 

• A program exception occurs 

• The user interrupts execution 

- Run to location 

- Jump to location 
-Halt 

- Restart 

- Hide Debugger on Run* 


■ List Window * 

■ Line- Sine number 

* Address - address in disassembly 
» Function - function name 
® Load- when named DLL is loaded 

■ Change address - memory change 

- Expression * 

- Address 
» Modifiers 

- Thread sensitivity - default = all threads 

- Condition - when expression is true 

- Pass counts - from/to/every 

- Deferred - Activated when DLL loaded * 


C Set++ Debugger 


C Set++ Debugger 




Monitors 


Monitor Properties 


. Display program data constructs 

- Single valued scalers, pointers, arrays, structures, 
expressions, classes 

- SOM classes * 

- Monitor formats 

- Data popup * single data item 

- Private - collection in secondary window 

- Program - collection in primary window 

- Local variables 

- Storage - monitor expression in storage * 


« Enable/disable 

B Context - part, thread, line number 
» Representation 
a Expand/coSSapse/dereference 
» Popup duration 


C Set++ Debugger 


C Set++ Debugger 


Expressions 

■ Creation 

- Type in the monitor expression dialog 

- Highlight in source view and click 

■ Operands 

- Variable , constant, register 
» Operators 

- Subset of the C/C++ language (including typecasting) 

- Mo function calls or assignments 


Call Chain 


. Lists all active functions for a particular thread 
. Double click on a name to open the program view 
. One call stack window per thread 
- Displays : 

. remaining stack size * 

® stack frame size * 

• return address * 

. esp * 

. ebp * 


C Set++ Debugger 


C $et++ Debugger 




Storage 

a Multiple storage windows 
■ Actively monitors contents 


» Flat and/or segmented addresses 

■ 14 styles available for viewing data 

■ Monitor an expression in storage * 


C Set++ Debugger 


Debug Session Control 

■ Threads 

- Enable/disable threads 

- Display the state of each thread 

- Components - structural view of program 

• - executables (exe,d!ls) 

• 1 -files 

• 1 -functions 

* Select files to view 

- Access other debugger windows 


C Set++ Debugger 


Registers 

- Processor registers and flags 
- Flags displayed individually 




■ One set of registers per thread 

■ Register and flag values may be modified 


C Set++ Debugger 


Inheritance view 

■ List of classes 

* Graphical depiction of the C++ class hierarchy 

■ Class definitions 


C Set++ Debugger 



Window analysis 

« Displays both graphical and textual information for all 
windows 

9 Shows the relationship between windows 


Message queue monitor 

* Displays PM messages associated with a PM 
application 

H Presents formatted messages in a list as they occur 
■ Controls: 

- Message information 

- Format of message parameters 

- Which messages are monitored 


C Set-M- Debugger 


C SeH+ Debugger 


Exception Handling 


Heap Check * 


0 Choices: 

- Examine/retry 

- Step exception 

- Run exception 

- Exception filtering * 


« Finding memory overwrites 

- Exceptions in malioc and free (heap related) 

- Procedure: 

- Compile option: /Tm+ 

- Select "Heap check when stopping" menu item 

- Set breakpoints in program 

- Run to breakpoints or step 

- Heap checked for corruption at each breakpoint and 
step 


C Set++ Debugger 


C Set++ Debugger 




Other Enhancements 


Customization 


■ Color support * 

« Scroll to line number * 

■ Include file dialog * 

■ Mew Source file dialog * 


* Source window properties 

- View priority and disposition 

- Threads to display 

* Default data representation 

■ 'Save window positions' menu item 

■ 'Autosave window positions' menu item * 

* Monitor properties 

- Location, duration, context, enable 
» Saved in 8PMB.,@4S 


C Set++ Debugger 


C Se?++ Debugger 


Usage notes 


"C" coding notes 


» C coding notes 
® Locating the source file 
« Startup and program profiles 
» The mouse pointer 

■ Finding the application 
a DosStartSession errors 
« OS/2 2.1 notes 

■ Others 


« Compile with /Ti /O- /G3. Link with /Be 
- Tabs in source: use SET PMDTABGRI0=5 
■ Multiple C statements on a line: 

- Breakpoints can only be set ©n the first statement 

- "Step" executes all the statements 
* Can debug "included" code 


C Set++ Debugger 


C Set++ Debugger 



Locating the source file 

* The name stored in the EXE (from icc Sine) 
B The directory containing the EXE 

■ The PMDPATH environment variable 

■ The current directory 


C Set++ Debugger 


Program Profiles 

- information saved: 

- Program name and timestamp 

- Breakpoints 

- Monitors (data, storage, registers, stack) 

- Views 

■ Saved when: 

- Close debugger 

- Starting new program 

■ Saved in <program name>.@4R 

- 'Enable/Disable Program Profiling' menu item * 


C Set++ Debugger 


a Command line 

- IPMB <args> <debugee name> <parms> 

- args 

* -p+ Use program profile 

* -p - Don't use program profile 

* -l Debug initialization code 

a The debugger normally runs the debuggee to MAIN. 
Use -i to stop in the initialization code 


C Set++ Debugger 


The Mouse Pointer 

a Indicates two wait states 

- Clock only: the debugger is busy 

- Clock + rectangle: the debuggee is busy (may be 
waiting for user input) 

a Finding the application 

- Use Ctrl+Esc to display the OS/2 Window List 

- Select the debuggee from the list (displayed as 
"Debug Appl - <name>" 


C Set++ Debugger 




DosStart Session Errors 


OS/2 2.1 Notes 


■ Occur on startup of debugger 

a More extensive error checking when the trace option is 
set 

■ Error codes found in Toolkit lnformation=>CP 
Reference->Errors 

- RC=2: a DLL referenced by the app could not be 
found 

- RC=127: a function in a DLL could not be found 

- RC=182: invalid ordinal - usually caused by picking 
up a different level dll than was used to create an 
import lib you linked to. 


C Set++ Debugger 


Others 


■ Using MSGBIND destroys debug information (open 
problem) 

■ Do not have the debugger and Extra active at the same 
time 

■ Shut down when MMPM/2 is installed: Use synchronous 
PM debugging mode or deinstall sound (OINSTSND) 

■ The OS/2 auto-lockup feature will hang the system if it 
activates while IPMD is active in synchronous mode 

■ Do not try to debug system modal dialogs 


■ PM Resource interlock and DosBebug errors 

- Caused by OS/2 system semaphore contention 
problem. 

- Seen on OS/2 2.1 and OS/2 2.0 with service pack 2 
installed 

- The fix: 

. Install C Set++ CSD CTU0002 
• Install service pack 1 for OS/2 2.1 or request the 
selective fix to AFAR PJ09240 


C Set++ Debugger 


Advanced Topics 

* PM Debugging 

■ Breakpoints in Oil's 

■ DLL's called from REXX apps 

■ Child processes 

■ Multithreaded apps 
= System hooks 

■ Workplace Shell programs 


C Set++ Debugger 


C Set++ Debugger 






PM Debugging 

■ No special preparation - automatic detection of PM app 
® The single system message queue affects how PM apps 
relate to each other 

- PM Debugging mode: refers to the different means by 
which synchronous message dependencies are 
handled when the debugger has control 

- When the debugger has control, no messages are 
passed to the debuggee (no repainting) 


C Set++ Debugger 


Asynchronous Mode 

■ The debugger responds to messages on behalf of the 
debuggee with a default response - prevents the queue 
from locking up 

■ Other PM applications behave normally 

■ Use when messages to the debuggee are not critical 


C Set++ Debugger 


Synchronous Mode 

® Keyboard and mouse messages for the debugger are 
processed, but those for other applications (including 
the debuggee) are not 

■ Other PM applications will freeze when a synchronous 
dependency is hit 

■ Required for DDR type applications 


C Set++ Debugger 


DLL Debugging 

- Set a Load type breakpoint to stop when the desired 
DLL is loaded. Then set an entry breakpoint on the 
function name or open the function and set a line 
breakpoint. 

■ ...or Set a deferred Line or Function breakpoint * 

■ For 32 bit apps, the system loads all the preload DLL's 
before 1PMD stops at MAIN. Therefore, Load type 
breakpoints for these DLL’s will never be hit (use -i on 
startup). 


C Set++ Debugger 




REXX and DLL's 


* Start IPMD 

- IPMD CMD.EXE IK <your Rexx.cmd> 

« When IPMD displays the code for CMD.EXE, set a load 
type BP to stop at the DLL. 

B Run 

= At the popup indicating your DLL has loaded, open 
desired parts and set breakpoints 
« Run 


C Set++ Debugger 


Child Process Debugging 

m 

« rc = OosExecPgm(LoadError, sizeof(LoadError), 
a EXEC_SYNC, NULL, NULL, &rcodes, 

® "t.exe"); 

B 

- Add IPMD... 

a 

® rc = DosExecPgm(LoadError,sizeof(LoadError), 
- EXEC_SYNC, 

a "ipmd.exe\0-n t.exe\0\0", 

® NULL,&rcodes, 

a "ipmd.exe"); 


C Set++ Debugger 


Child Processes 


« DosExecPgm allows your program to request that 
another program execute as a child process. With a 
simple change to the parent, you can start an instance 
of IPMD to debug the child. 


C Set++ Debugger 


Multithreaded Applications 

* Use the Debug Session Controls window to select and 
enable/disable threads 
= Breakpoints can be made thread specific 
« Separate registers and stack can be displayed for each 
thread 


C $et++ Debugger 





System Hooks 

■ pyWSN.DLL restrictions don’t allow the debugger to 
function properly 

a Always use synchronous mode to debug with 
subsystem hooks active 


C Set-M- Debugger 


C Set++ Support 

« CompuServe 

- OS2DF1 - section 4 (IBM C Set/2 s IPMD) 

- OS2DF1 - section 5 (C++) 

» Internet 

- OS2-PGMR forum 

- "ftp-os2xdrom.com” for CSOs 
= 1-800-237-5511 IBM support 

- IPMB BBS 1-800-874-2881 
■ CSBs 

- CTCOOOn Compiler 

- CTUOOOn Utilities 

- CILOOOn Class libraries (2.0) 

- CTMOOOn Class libraries (2.1) 


C Set++ Debugger 


Workplace Shell Programs 

Q In config.sys: 

- SET RUNWORKPLACE=C:\OS2\CMO.EXE 
« fn an OS/2 window: 

- IPMB C:\os2\pmsheII 

» Set a Load type breakpoint for the DLL containing the 

WPS program 


C $et++ Debugger 



CC03 



Objects at Work 



IIH Operating System/2 


IBM Class Library: Standard 



a Port of AT&T Standard Library 3,0 
& I/O Streams Library 
* Task Library 
88 Complex Library 


IBM OpwMting Sysmn/2 


Copyright International Business Machines Corporation 1993 


IBM Programming Systems 



C Set.** ;s composed of; 


» IBM Class Library; User Interface a C/C++ Browser 

as IBM Class Library: Collection « C/C++ Execution Analyser 

& E8M Class Library* Standard as C/C++ Graphical Debugger 

as C/C++ Compiler b WorkFreme/2 

as OS/2 2.1 Developer's Toolkit 



IBM Operating System/2 . 


IBM Class Library: Collection 



38 Multiple implementations 
ss implementation Invariant 
as C+ + Template Implementation 
a Cursor and Iterator 

- Same as :<•$ used Ihe irtteJfaoa Class Library 

a Exception Handling 

~ Sam* as Is i:s*d ir. the* User Interface Claa* Library 

s Used in the User Interface Classes implementation 

as Types of Collection: 

- Otreus, Stack, 3>riorsty Ouftwe) 

- Bags (Stag* Sorted. Ordered. Key) 

- Sets (Set. Sorted* Orcloted, key) 

- iteps and Relations 

- Trees (Binary sad A:b:very) 

IBM Opwming Sysi©m/2 


1 



































IBM Class Library: User Interface 



Graphic User interface 


s Easy to Use 

~ hr Fact, chiltfwn car? operate a confute: Ixjfcre t?v>y con reed 

» ^ajor influence on an Application’s: 

- Pc*rceived quality 
~ Fu::ccioria:ity 

- fteliasrtry 

- Degree- or integration with the c-yeraring vnv:ronmc--t 

- Technolooicot superiority 

js CUA Workplace Model 

- 3&&?’s rate® and reoosnmendancn-*:* for use? ir-teifacc design 
~ Focu* on Object* 

- K.r;ovytedg* V.-a^ssterenee- 

•• i.eavee the dsc- :n Control 


IBM Opwming Sysfmn/2 


IBM Clms Library: User Interface 



Benefits; 


» Reuse 

- Application 

- Library 

sa Multi-thread Applications 
» NLS/D8CS Applications 
w Portability 

s Class Hierarchies can be Extended 

sa Eliminates the need for PM Programming Knowledge 

■ Handier Scheme Supports C PM Program Migration 

- Can inter- mix C PM code with Class Library code 


IBM Operating Syatem/S 


Copyright International Business Machines Corporation 1993 


IBM Clms Library: User Interface 


OO Exportation 


a Encapsulation 

vi PM AP3 is hidden leading to greater productivity & portability 
« Each class defines its valid operations 
vi Can ,r drop into" PM if needed 

a Inheritance 

55 Better menfai model for iihrary user 

sa More efficient and maintainable for a library developer 

ss Polymorphism 

a Respond to GUI events by overriding Handier virtual 
functions 

a Customize member functions eg. caicMmimumSizeo 
a Templates 

ss Tor defining thread member functions, DLL procedure 
addresses. Drag Drop item Providers, etc ... 

! 3 H Operating Syatwn/2 


IBM Clms Library: User Interface 



Components 


w Frame Windows 
a Controls 

- Basic PM r-«d OS/2 V2 CUA Ctererclo 

- ?^«rtu* 

- Extended Cs?«vOS» 

- Canvas Controls 

a Handlers and Events 
a Direct Manipulation 
a Dynamic Data Exchange (DDE) 
as Resources 

a Multi-Threaded Application Support 
a Data Types 


ISM Opmwting Sy$tm®/2 



























IBM Class Library: User Interface 


Frame Windows 


as Frame Window Features 

- Pri'Ywy, Sfccomiary 2nd Chiid Window* 

- Diaiog Tom pi ate 

- Clk-r». Are* w».h A«y Control 

- From® £x'»nsi<ir:v 



- Tit!* Bar 

- System Stem: 

- Many S#r 

- Window kon 

st Standard CUA Dialogs 

- F ii« (Open / Soys- As) 

- Fork 


IBM Operating Sysiem/2 


IBM Class Library: User Interface 



Canvas Coni rats 


55 a Dynamic Control Layout Management 

- Manag* Conteo! Biz* 

~ Btenage Cteutro: LaftWon 
■• Magogs Control Scaling 

- Ktansg* Tabbing a:x: Cursor Movernont 

- (Manage Owner's Events 


ga Layout Based on' 

- T<-:<t Contsst 

- Font Elxa 

- Minimum Sitte 
•■ Algorithm 


a Benefits 
*■ Dvvico Independence 
- Reduce iiLS / DBCS Transiatien Cos; 


HI Operating Symm/2 


Copyright International Business Machines Corporation 1993 



h Base PL1, OS/2 V2 CUA arsd Extensions 

- StoCo Controls 

- Text Controls 

- Siids: / Coin Control* 

- Canvases 

*■ Fop-op frtemus 

- Ccntolnsr Control 

- Motebocl*; Control 

s> No Meed to Subclass 
» Control Handlers H$ 

88 Events Dispatched to Controls 
k Resource Support 
® Font and Color Support 



SIM Operating System/2 


IBM Class Library: User Interface 



Canvas Controls 



w Viewport 

~ Aulontetin W::sdov» / Canvas Scrolling 

a; ISetCanvas 

- Automatic A-a".go Chiid vVmdowss in ftowo S Columns 

ss ISpiitCanvas 

~ AutoJv.atio Sizing y::d Positioning of Child Windows 

- Provides a Spto. Boro between Ute Chiid vVmdows 

ss i&uitiCettCanvas 

~ tlsor arrange y r Child Windows in Row & Coierrm Coiis 

- Frovid-c-o Split Bars votwe-on Cello 

- Allows Coll Overlays 


HI Operating Syetem/2 


































IBM Class Library: User Interface 

zn 1 1 

Handlers and Events 

8g Events are Dispatched to Handlers 
gg Handlers Attach to Window Objects 
« Handler List 

sg Reusable Handler Classes at the Application Level 
as User-defined Handler Classes for User Messages 
88 Single Instance of Handier to Multiple Objects 

« Event Classes Encapsulate Message Parameters 
s User-defined Event Classes 

HU Operating System2 


IBM Class Library: User Interface _ 


Direct Mantpufaison - Ovnrvlnw 

a Distinguishing Feature of CUA 'SI and Workplace Shell 
a Heoessary for a leading edge OS/2 application 

b Benefits of Encapsulating PM Direct Manipulation 
t3s« 00 for an ot-oot-action nsvcivlgm is a nstv^: ohcico 
- m API 



«• Ciosnfy »c?pv'-5to :3k1 ir-to net <V objects 
- Rcu-» 


HI Operating System/2 


IBM Class Library: User Interface 


Direct SXanipulasktn - K#v Objects 



IBM Class Library: Userlntetface 


Dir&a Manipulation - Summary 

ss Simple Things are Easy 
~ default Handlers, Stem Providers, afa ... 

- Add S3 entree andar target Support v;:th ?. single fw;cfion cal: for: 



a Powerful DM Framework 

- 30 di";.fv>nt clvose-s for DM 

- Exploit ihes* to prodac-a almost any type of Dty? 



i IBM Operating System/2 


^^■BSgSBgMg^ BBSI^ ^gMBBgSEgg ^ 

a. . sssssssssssssssbssssssssssssssssss sssssss 11 1 |niBin " rni i&sfrSi 


QpmMng Systmm/2 


Copyright International Business Machines Corporation 1993 


Page 4 



















IBM Class Library; User Interface 


Object-Oriented DDE 


« DDE Client - DDE Conversation Handier 
» DDE Server - DDE Topic Handier 
a Encapsulates DDE Messages to Events 
« Ail DDE Transactions Supported 

~ Mot Links - Waning 

- Data rk-gusste 
~ Data Pokaa 

- Remove Cemrnand Execution 
•• Ackn*>wk-^g»rrw:-«te 

- Brcc-^casvv 

» Hides Complexities 

- Obj act. Window 

- Shanxi Memory 

- Atom Table 

« Handlers and Events 


HI Operating System/2 


4> 

M 

IBM Class Library; User Interface 

Multi-Tfriended Application Support 



» Some OS/2 P&i Apps fesi be ^uiti-threaded 
88 Full &Su!ti"tbread APIs Supported 
sa Library is t$uiti-thread Enabled 

« Start Separate Thread on; 

- Any Function 

- Any C*?+ timber Function 

a? Critical Section Ciess 
sa Semaphores 


HI OpwwUng §y®tmt/2 


Copyright International Business Machines Corporation 1993 


IBM Class Library; User Interface 



Resource Library Support 


a DLL Support 

a Reference Count Pointer and Bitmap 
si Support Ail OS/2 Resource 
a Resource ID interface 
88 Set Application Resource 
a Set Library Resource 


HM Op®mSng System/2 



8? Construct String Objects 

a internationalisation (DECS) Support 

a Reference Count 

« Robust Functions 
- Utility Functions 


- Oysrafors (Assignment & Con eaten atio~.\ 

- Tracing 

~ Convert Stung to Other Types 

- 3ea?c>*,;ng 
■* Editing 

- Wc:d Manipulation 

- Are currently in Varaiou 2.1 of CSetf* for A3X 
MLS Date and Time 


ISM Opwattng System/2 


5 




























IBM Class Library: User Interface 


Exception Handling 



« Exception Handling is Error Hanging 

a C+* Exception Thrown 

a Common Exception Hierarchy 

a Uncaught Exception Handling 

Exception information 
- <<?ror :d 

t zxi tMLS SuoGcned) 


- &&verxy 

ss Exception trace 
-fils 


- function 

- (?j:^ number 


UK Op®mt!n§ Sysmm/2 



§|§gg W$IM 

^SBCS 1!1!||1| 

k Ut£ "fix ne a nd &afe fbcate) : . ||| -||||§|| 

& HL& teyoul 

© f'iLd Resource DLLs 

B Single EXE * f§| DLLs 
a &L&yOB£&Enabifrig - Text Translation 



Copyright International Business Machines Corporation 1993 


IBM Class Library: User Interface 

Histoty 

ss IB LI interne! Use since 1990 
a World-Wide IBL3 Usage since 1991 
as 10 Llonth Beta Test Before Shipped 
» Shipped Version 2,00 for OS/2 in LI ay 1993 
a Shipped Version 2,01 for OS/2 in Oct 1993 

































































IBM Class Library: User Interface 

Additional (n formation 


@ Class Room Instruction 

- Skill Dynamic*} -CP10S70C 

~ "PW Programming Ussirj^ IGLUi” 

- Cal: (@30)-^&«322 

gg Mew Book from VMR 

- Pow>er GD: Prflsnwmr.mg with C$er++ 

- 0-442-01795-2 ' 

- Available Summer or '04 

- Written by the Architects and Devaiopere 



IBM Operating Systsm/2 


IBM ClasslAhmry: UserlnSesface 


On-Uno Support 



sa Developers monitor to: 

- Provide Official Sup pen 

- Gather requiitematrto far future releases 

sa Within I6&I 

- IBtdPG Gonteranoa Disk 

:• xfitfsr* "O Wli-f- • v.riJ»:0::o v'>x-: r_<5>:ojy 

sa Outside SB&? 

- IBtrt TaikLinx Ccnfcm-noing S*>rvice 
«• CompuServe • CO 0 ;> 2 : 3 F • 

• C4:<&& •-■ St t Jc. :?•>: '.'xJxv.jc'xr xo« :&:« Tc<ote 

- internal 

• •.:»;«• tut x.v i:«.: CS-ov-.- •?r.y}.y J .\ 

- OS/2 Software Defect Support Litre 

- k*6r>n*y •; 0 \wj’s. r.f, f. OSoto ;•*« v.'.A 'wst* yo:;r .vjvSo/'.'.g: ;;v:n«w rvsr.'j 


Ig g| OperMSmg System/2 


4» 

IBM Class Library: User Interface _ 

Source Code 


IBM Class Library: User Interface 


Future Directions 



sa Available for: 

- bear Interface Glaao Libr ary 

- Ceflecrien Cisoa Library 

aa Mot needed to effectively use the libraries 
as Useful for: 

- Learning implemantabcn detail* 

~ Sairrg IPhff? daouggsi' with library coda 

& Available as a Separate Product 

- Product Number 61G140C 


88 2D Graphics Classes 
a MuHSMedia Classes 
sa Win32 Port 
si Stfotif Port 


bs Customer Partnership Program 

- Input cn Fvtura Dliaccicne 

- Evaluation o? Sola Paieaaee 

- rcr Wore informalior; i : ?.x Daquoat te; 


I ISM Operetta System/2 


IBM OpmmSng System/2 


Copyright International Business Machines Corporation 1993 


Page 7 






















l|IBMCSet++'s 


Arrgoligue F. Faustina 
Toronto Lab 
IBM Canada 


► Introduction toWorkFranie 

Terminology ? ?p- 

111 . ■ 11111 

"iiropo^jte Projects 

lllMiiliii . : v r; 

■ - Actions Profiles -V 

111 111 

► Comparing WorkFrame ^;;)IM|H||W|PW 
- Ver®lon : 2 and Version 1.. ■ 

£ Wt rs . 1 WW ' HU 

► WorkFrame Version 2,1 Qsmon^ratlonM 
v Questions & Answers 



► Integrating Development Environment 

► Language Independent ||p|||||||||l 

* Open ". ■ ; -SHI 

~ Compilers 

► IBM C Set PL/J, Fortran 

111 ► 

1111 WATGOM C|386, FORTRAN • 

► ZortechC++ Iff- 
- Editors 

*Em 

► RimStar 

- SourceUnk 

► Folly Conllgymfele 


lllllllleli WorfeFrarrte Terin inoi< 

Projects 

► Multiple Source Directories 4 File Masks 

► Target File 

| List Of Valid AefionsfActions -Pri^iteilllll 
Bis!i4i- ; O^fI©f 1 1 : ;;:i 

► Run Options 






Wofkpratn© terminology 

Composite Projects 

•.' ?* B^se :: i|;^|0«|ls ;'7 

- Composite Projects 

;•' OSsigtiatea'Tattje||Pr|)ii?f : ■ ' 

«?; :' ;: - : ::Suifdor RunTarget from any level In the 
hierarchy 

: ";. : 'E CpntroHhk order of project pr|§e||mg ■ 


WorkPmme terminology 

Actions 


► Ahy tool or command 

- OS/2, DOS, Windows 

- Text window. Full screen, PM, Monitored 
»SHHh MlteXt ■ 

- Project Sct>pe: iillite, Run'§|||||::|||||Spt; y 
-Fife Scope;; Compile,- Edit:.! 

=: r ^bure© 

•• content sensitive ' .. 

^ Options Module 

■ • - Set options graphically, Parse dependencies 

- Supplied by tool vendor 

- Default Options Module Included 








' x - 

r .. : ; AHillWiiilisV ; 

fGi r : -^c?ti class 

.^tfgka^nm^s ^i^;v;=- v - .' . ; 

§$efan|t Actions Profile applies to everyproject 


WorkFrame Term Oology 

Monitor 


► Save output from action In scrollable monitor 

► Any action that emits output to stdout can be 
ruh In a Sipfltor 

=' ' " 4 "- " '■' ’:’ 

| Edit :flffJ|J| 

jit error lines -' ! ‘ 

■ ■ ^ f asy tomoveto other errors |jt 

► Sinjjpb4o;:.r|r^eGbtn ; ;iny ^'ocjiin- :: :;' 





lilil Com paring WorkFrame - 

fermion 2 and Version 1 


Comparing WorkFrame 


► WPS Interface 
iMtfplI' directories per■. 

§f Actions Profile ■■■ f. 
-Unlimited number of i 
actions 

► Projects and profiles can 
\be iocpted arsywhere ■••••• 
; ; fcContext;s^sitiveolsject::i 
' oriented approach 

► Built-in hooks for source 


► Pill Interface 
^Single directory per 

► Language Profile 
. : ~ : Compile» Link, Debug,. 

■; .'Slake. 

Mi projects and profiles • :: 
: :. :1pbafed in one directory 

► Traditional action oriented 

apppiach 

► No support for source 
code contfdi systems 


I Options 

- $et§rapnic?.aHy". ; 

- Saved with project • : 

* Actions run in WorkFrame: 
; monitor..dttekiwiridow- ■ 

► Actions Interpreted per : ’ ’ 
project 

► Actions grouped by 
class 

► Project represents : 
multiple di rectories 

► Project and file scope 
actions ■ 


^Opfidns,-- ■ 

■: «..Setfektuaiy. . 

:fli'Sayed:.glQbaily- 

► Actions run in tegular .text 

wmmmmimmmami 

► Actions interpret#. 

: .gidbllly. 

► All applicable actions 

■,lisfed ; .:^ 

►WPS folder represents .a . 
y singse tfirecfdry;. 










CC05 


C Set ++ Optimization 
Tips & Techniques 


C Set ++ Development 
IBM Toronto Laboratory 



Agenda 


■ Phases of the compiler 

- Optimizations Performed 

• What they do 

• How they work 

« Pentium Exploitation 

■ Factors that inhibit optimization 

- Hints and Tips 

- Debugging Optimized Code 


The Front End 

► Preprocesses 

► Parses 

► Performs syntactic and lexical analysis 

► Performs semantic analysis 

► Performs alias analysis 

► Translates results into intermediate code 



Intermediate Code Linker 


► Combines the intermediate code from several 
compile units into one intermediate code unit 

- The result appears to the optimizer as though all 
functions and variables were declared in the same 
compile unit. 

- This allows the optimizer to perform 
interprocedural analysis, and function inlining 
while ignoring the fact that the functions originated 
in different compile units. 


Intermediate Code Linker 

(continyed) 


- Reorders statics and global variables to reduce 
storage wastage from alignment. 

► Takes usage counts into consideration when 
reordering, so as to group frequently used 
variables together 

- Rewrites alias information to take facts into 
account that can only be seen by analyzing 
multiple source files 


continues... 


Local Optimizations Performed 

► Constant Folding 

o Constant Propagation 

► Copy Propagation 

► Call Parameter Cleanup Coalescing 

► Local Common Sub-Expression Elimination 

► Algebraic Simplification 


Constant Folding 


Precalculates constant 
expressions or portions 
of expressions ^ 
- Expressions may be ^ 
rearranged to expose 
more constant 
expressions 


» a = 10*20/5+3*y 

The part of the expression 
(10*20/5) will be calculated at 
compile time. 

»b = 10 + a + 12; 

This expression will be re arranged 
so that it will read b = 22 + a ; 


ttdefine FOO 100 
#define BAR 200 
#define FOOBAR (FOO+BAR) 

Will result in foobar having 
the value 3 00 calculated at 
compile time. 




Constant & Copy Propagation 


Uses the same value for 


copies of variables and 
constants 


- can eliminate copies 
of variables. 



Given the following code fragment: 

a = (b+c) ; 
i = j+k; 
d = a; 

X = y-f-H; 


The copy of a into d wiii be 
eliminated and subsequent 
references to d will be substituted 
with a reference to a. 


a = (b+c) ; 
i = j+k; 
x = y+a; 


Common Sub-Expression 
Elimination (C.S.E.) 

Identifies calculations 
which are identical and 
redundant and removes 
them. 

- Compiler must watch 
out for aliases! ^ 

" becomes: 

tmp = &hRes[i+j] 

*tmp = PoolAlloc(HashPool); 
tmp->hSym = hSymbol; 
tmp->hNxt = pHshTab[IKey]; 
tmp->hNewSym = NIL; 
pHshTab[IKey] = *tmp; 


The code fragment: 


hRes[i+j]=PoolAlloc(HashPool) 
hRes[i+j]->hSym=hSymbol; 
hRes[i+j]->hNxt=pHshTab[IKey] 
hRes[i+j]->hNewSym=NIL; 
pHshTab[IKey]=hRes[i + j ] ; 


Parameter Cleanup Coalescing 


Coalesces the add 


ESP,nn found after 
each call. 


- Removes a major 
performance penalty 



found In csSlor closnup 

of argument lists. 


Consider the C fragment: 


a = 

foo(b, c, 

d) ; 


e = 

bar{f, g) 



Code Generated: 
Berors 

A tier 


PUSH 

d 

PUSH 

a 

PUSH 

C 

PUSH 

c 

PUSH 

b 

PUSH 

b 

CALL 

f oo 

CALL 

f oo 

ADD 

MOV 

ESP,12 
a, EAX 

MOV 

a, EAX 

PUSH 

g 

PUSH 

g 

PUSH 

f 

PUSH 

f 

CALL 

bar 

CALL 

bar 

ADD 

ESP,8 

ADD 

ESP,20 

MOV 

e, EAX 

MOV 

e, EAX 


Algebraic Simplification 


► Uses the rules of 
algebra to simplify 
mathematical 
expressions. 

- A simpler expression 
can have faster and 
more compact code 
generated. 


For example, 

The expression: 

a = {!b || 1c) 

becomes: 

a = 1 (b && c) ; 


The expression: 

a = 5*b + 5 *c; 

becomes: 

a = 5*(b+c); 



Local Optimizations 

(continued) 

► Expression Reorganization 

► Redundant Load Removal 

► Peephole Optimization 

► Prologue/Epilogue Shrinking 

► Frame Register Remapping 
*- Storage Packing 


Expression Reorganization 


► Using the rules of 
algebra, expressions are 
reorganized to expose 
more common 
sub-expressions 
- This provides more 
opportunities for other 
optimizations. 


For example, 

a = (!b || ! c) || f; 

d = 7*a + 5*c + 7*d; 
e = I(b&&c); 
f = 7*(a + d) / x 

becomes: 

a = ! (b && c) | | f ; 

d = 7 * (a + d) + 5 *c; 

e = ! (b && c) ; 

f = 7* (a + d) / x; 

becomes (after C.S.E.): 
a = (tl = ! (b && c)) | | f ; 

d = <t2 = 7* (a + d)) + 5*c ; 

e = tl; 
f = t2 / X; 


Redundant Load & Store Removal 


Removes loads of 
variables which are 

For example: 

already in registers 

MOV EAX, a 
ADD EBX, EAX 

Removes the first of 

MOV EAX, a 

several consecutive 

MOV b, EAX 

stores to the same 

Becomes: 

variable 

MOV EAX, a 
ADD EBX, EAX 

- Volatile honoured 

MOV b, EAX 

► Volatile causes the optimizer 


to leave a specified variable 

and the C fragment: 

alone. No reordering or 

a = x+y ; 

elimination of loads or stores 

a = !(b && c) 

to the specified are 
performed. 

Becomes: 


a = ' (b && c) || f ; 


Peephole Optimizations 


► Examines the instruction stream for short 
sequences of instructions which could be replaced 
by more efficient or smaller sequences. 

> Not a heavily used technique in C Set ++ 

- We prefer to select the right instructions, rather 
than the wrong ones which will get fixed up later 
by the peephole optimizer. 

- Some sequences are unavoidable, however, and 
these are handled by this optimization. 




Prologue/Epilogue Optimizations 

Removes saves and restores of unused registers 
that are in the save set as defined by the calling 
convention. 

- May entirely remove prologue & epilogue if there 
are no iocais. 

- Significantly benefits small procedures, where 
the overhead of the prologue and epilogue can 
be larger than the work to be performed in the 
body of the procedure. 


Storage Packing 


► The Optimizer will 
reorder locals so as to 
keep them aligned, and 
minimize the space 
taken. 

- Reduces stack space 
requirements, and 
increases cache hit ratio. 

- Sort based on usage 
counts helps cache. 


Consider: 

void foo(int bar) 

{ 

int a; 
char b; 
int c; 
char d; 
int e,- 

} 

The ints are dword aligned, so this 
stack frame takes 20 bytes. If the 
compiler re-orders them: 

int a, c, e; 
char b, d; 


The stack frame only takes 16 bytes. 


Frame Register Optimization 


Uses ESP as a frame 
register instead of EBP. 

- Reduces the number 
of instructions in the 
prologue and epilogue 

- No short forms for 
ESP based 
addressing modes 


Note: /Gr disables this optimization 
since negative offsets from ESP are 
unsafe at ring 0. 

Foo PROC 

PUSH EBP 
MOV EBP, ESP 
SUB ESP, 4 
MOV EAX, [EBP+4] 

ADD EAX, [EBP - 4] 

LEAVE 

RET 

Becomes: 

Foo PROC 

MOV EAX, [ESP+8] 

ADD EAX, [ESP] 

RET 


Global Optimizations Performed 

Global Register Assignment 
Loop Unrolling 

Loop Induction Variable Analysis 
Strength Reduction 
Loop Invariant Code Hoisting 
Advanced Aliasing Analysis 


continues ... 




In the following ternary example: 


► Identifies values which 
should be stored in 
registers for large 
ranges of code - and 
across control flow. 

The following code would be 
generated: 

MOV EAX, x 
CMP EAX, y 
JE LI: 

CALL func2 
JMP L2 
LI:CALL FUNC1 
L2:MOV a, EAX 


Loop Induction Variable Analysis 

► Identifies loop index variables, and any other 
variable which changes by a known amount each 
iteration of the loop. 

- Identifies these as candidates for placement in 
registers. 

- The register assigner will decide later which ones 
will actually be placed in registers. 


a = (x —— y) ? fund (x) 

: func2(x); 


► Repeats the body of the 
loop a number of times. T he following loop: 


- Reduces the loop 
overhead. 


for (i=0; i<4; ++i) 



- If the loop condition 
has a constant factor, 
the loop can be 
unrolled by that factor. 


Changes to: 

b [0] = 0; b [1 ] = 0; 
b [ 2] = 0; b [3 ] = 0; 

The following loop: 

for (i=0; i<x*2 ,* ++i) 
b[i] = 0,- 


Changes to: 

for (i=0; i<x; ++i) 

b [i++] = 0 ,b [i] = 0 ; 


Loop Invariant Code Motion 

► Removes expressions 
from a loop if it can be 
determined that they 
don't change from one 
iteration to the next 

it changes to: 

for(i=0, t=j*k; i<10; ++i) 
b[i] = i + t; 


If we start with a simple loop: 

for (i=0; i<10; ++i) 
b[i] = i + j * k; 


As long as the compiler can determine 
that b cannot point to either j or k. 





Strength Reduction 

Replaces complex 
calculations depending 

on an induction variable lf we start with a sim P |e | 0 °p : 
with a simpler for(i =0 . * <10; ++i) 

calculation. bin = o ; 

it changes to: 

for(i=0,x=&b ; i<10; ++i,++x) 
*x = 0; 

which changes to: 

for(i=&b+10,x=&b; x<i;) 

*X++ = 0; 


Advanced Alias Analysis 

Determines which variables any given pointer can 
possibly point to. 

Determines which pointers can point to any given 
variable 

- Initially performed by the Front End, but rewritten 
by the intermediate code linker to account for facts 
that cannot be obtained by looking at only a single 
compile unit. 

A basic function upon which many optimizations 
depend 

- Often not well performed by other compilers 


Simple Loop Recognition 


» Identifies loops which 
are equivalent to 
functions like memcpy 
memset, or strcpy, and 
generates very 
efficient code. 


If w© start with the following code: 

for(i =0; i <100; ++i) 
j [i] = 1; 

for(i =0; i <100; ++i) 
b[i] = c[i+1]; 

it generates: 


MOV 

ECX 

, 25 


MOV 

EDI 

, offset 

j 

MOV 

EAX 

, OhOlOlOlOl 

REPNZ 

STOSD 


MOV 

i , 

100 


MOV 

ECX 

, 25 


MOV 

EDI 

, offset 

b 

MOV 

ESI 

, offset 

c + 1 

REP 

MOVSD 



Global Optimizations 

(continued) 

► Advanced Switch Analysis 
*> Jump Straightening 

► Jump Folding 

► Dead Code Removal 

► Boolean Store & Return 





Advanced Switch Analysis 


Finds dense regions in a switch list, and generates 
a branch table for each dense region 
Uses binary searches to handle the sparse regions, 
or to find which dense region the desired case is in 
Only uses a string of if - then - else, if there are 2 or 
3 cases in the switch 


Dead Code Removal 


Removes unreachable 
code 

- either created by the 
user through sloppy 
programming 

- or generated by the 
optimizer. 


Combining constant propagation, and 
dead code removal on the following 
loop: 

j = 5; 

for (i=l;i<10;++i) { 

a [i] = j ; 
if (j == 5) 
a[i] = 0; 
else 

a[i] = 10; 


Results in: 


for (i=l ; i<10;++i) 
a [i] = 0; 


A REP STOSD will be used 
to fill the memory with Os. 


► Branches to branches 
are removed and 
replaced with jumps to 
the final target 


if (a) 

switch(foo) { 

case 1: break; 
case 2: break; 

11 :} 
else { 

// .... 

} 

L2 : 

Normally, the break statements 
would translate into a jump to II. 
The first thing that will happen at II 
is a jump to 12. This optimization will 
cause the break statements to 
generate jumps directly to 12. 


Boolean Stores & Returns 

► Removes an if - then - 
else statement, and The c fra 9 ment: 
replaces it with an a = 1 ,- 

expression with no else _ 

control flow. 

turns into: 

a = (X —— 0} ; 

The C fragment: 

if (a == 0) 

return x + n; 

else 

return x; 

turns into: 

return x + ( (a == 0) * n); 








Interprocedural Optimizations 

► Optlink calling convention 

► Register Resurrection 

► Tail Call Elimination 

► Tail Recursion Elimination 

► Procedure Inlinlng 

► Intermediate Code Linking 

- Makes the interprocedural optimizations work 
across compile units. 


Optlink Calling Convention 

► Register based calling convention 

- Can pass both integers and floating point 
parameters in registers. 

► The first 3 integer parameters and first 4 floating 
point parameters wiil be passed in registers 

- Abie to handie the absence of prototype 
statements 

. even in the presence of variable length 
argument lists 


Register Resurrection 

► If a leaf procedure does not alter a register that is in 
the killed set (EAX, ECX, EDX), it is marked as 
preserved for that procedure. 

- allows the optimizer to keep more values in 
registers across calls. 

- The optimizer reorders procedures to expose 
more opportunities for resurrection. 


Tail Call Elimination 


* When the last statement 
in a procedure is a call 
to another procedure, it 
is turned into a jump. 

- eliminates a return, since 
the procedure you jumped 
to returns directly to your 
caller. 

► Better cache behaviour 

- Assumes sufficient 
parameter space. 


int foo(int a, int b) 

{ 

//... 

//... 

bar (a, b) ; 

} 

The call to bar will be replaced 
with a jump to bar. 





► Similar to Tail Call 
Elimination, Tail 
Recursion Elimination 
turns a recursive call 
into a jump - making a 
recursive solution into a 
much faster iterative 
one. 


For the following code: (from hanoi.c) 

static void Move(int n, 

int nSrc, 
int nDest, 
int nAux) 

{ 11: 

if (n == 1) 

++INumMoves; 
else { 

Move(n - 1, nSrc, 
nAux, nDest); 

++INumMoves; 

Move(n - 1, nAux, 
nDest, nSrc); 

} 

} 

The last call to Move turns into a 

goto to li: 


Pentium Exploitation 

► 


Rewritten built-in functions 
Different Instruction Selection 
Instruction Scheduling 


Procedure Inlining 


► Selects functions to be inlined based on the 
following criteria: 

- Size 

► Procedures smaller than the threshold specified 
on /Oi will be candidates for this optimization 

- Jnline keyword 


Current Built-in Functions 


- abs 

« strcat 

- fsin 

• _alioca 

- strchr 

■ fcos 

■ fabs 

- strcmp 

» ftan 

« labs 

■ strcpy 

B fasin 

- memchr 

■ strlen 

■ facos 

- memcmp 

- strncmp 

■ fatan 

- memcpy 

■ strncpy 

- fsqrt 

« memmove 

« strrchr 

■ _c!ear87 

» memset 

■ fsincos 

B _control87 










Rewritten Built-In Functions 


Most of the built-in functions have been rewritten to 
maximize the possibility of concurrent execution on 
the Pentium. 


Instruction Scheduling 


► Instructions are 
reordered to maximize 
the possibilities for 
concurrent execution, 
and minimize the 
likelihood of interlocks 
between execution 
units. 


An ©xampi© where w© avoid an 
AG I on the 486: 

MOV EAX, varl 

MOV EBX, i 

MOV ECX, [EAX+EBX*4] 

Becomes: 

MOV EBX, i 

MOV EAX, varl 

MOV ECX, [EAX+EBX*4] 

Note that if the index register in 
a base-index-stride addressing 
mode was set on the previous 
instruction, the instruction using the 
address mode will take an extra cycle. 


Instruction Selection 

Floating point instruction selection changed to make 
better use of the Pentium's floating point pipeline. 


Factors That Inhibit Optimizations 

Aliasing, Aliasing, Aliasing 

- Gratuitous address taking 

- unnecessary use of global variables 
Needlessly complex control flow 

- multiple got os out of loops 

- gotos into the middle of loops 





Hints & Tips 


Hints & Tips - Using Strings 


9 - Compile Options 

- Use /O /Gi /Gf /Oi /Os /Gh- /Gr- /Gw- /Ti- /Ts- 
► Optimize, use fast integer, use fast floating 
point, inline procedures and schedule. Don't emit 
profiling hooks, don’t disable stack frame 
optimizations for ring 0, don’t emit FWAIT 
instructions, don’t generate debugging 
information, and don’t disable stack frame 
optimizations for the debugger. 

► Use Execution TRace Analyzer to find hot spots in 
your code. 


► Use #pragma strings(readonly) 

- When you use built-in string functions, the 
compiler can generate better code when it knows 
that string literals will not be changed. 

► DWORD align strings 

- Compiler will align all strings it allocates, but you 
should ensure that strings you store in memory 
allocated with malloc are dword aligned. 


continues ... 


continues ... 


Hints & Tips - Using Strings 

(continued) Hints & Tips - Calling Functions 


► Use the built-in string functions rather than trying to 
duplicate them in your code. 

► Avoid built-in functions in loops. 

- Many built-in functions use multiple registers. Some of the 
registers are specific and cannot be changed. In the loop, the 
number of values to be placed in registers increases while the 
number of registers is limited. As a result, temporary values 
often cannot be stored in registers. This can slow your program 
down more than the built-in functions speed it up. 


► Whether you are writing or calling a function, keep 
the following in mind: 

- Fully prototype all functions 
► A full prototype gives the optimizer complete 
information as to the types of the parameters - 
type promotions don’t take place, and optlink 
eyecatchers are not emitted. 


continues ... 






leftmost position in the parameter list 


- The leftmost parameters have a better chance of 
being stored in a register due to the optlink 
selection of parameter registers. 


continues ... 


Hints & Tips - Optimizer 

► Minimize the use of extern variables 

- Reduces aliasing, and therefore improves optimization 

► Avoid taking the address of local variables 

- If you use a local variable as a temporary, and must take its 
address, avoid reusing that temporary for other purposes. 
Taking the address of a local variable increases the potential 
for aliasing, and inhibits optimizations that would otherwise be 
performed on calculations using that variable. 


continues ... 


Hints & Tips - Calling Functions 

(continued) 




by value 

. Passing aggregates requires the compiler to copy and store 
many values. Pass or return a pointer to the object instead. 

- In a Tail Cal! where you pass the same 


parameters that you received, try to pass them 


the same order. 


- The optimizer can just re-use the storage and registers 
they're in now, and not have to copy them. 


continues ... 


Hints & Tips - Optimizer 

(conti raued) 

Avoid using short int values 

- Since all integer arithmetic is done using long int 
values, short values cause extra conversions to 
be performed. 

Use unsigned data types for variables whenever 

possible 

- When an unsigned variable is divided by a power 
of 2, the compiler can use a shift instruction 
instead of the much slower divide instruction 

- Faster code can be generated for comparisons of 
unsigned variables 

continues ... 



Hints Si Tips - Optimizer 

(continued) 

Kuxirnii H7 i k i«ouuwumKaaMui^^ unmi 

► If a loop body has a constant number of iterations, 
use constants in the loop condition. 

-for (i=i; i<4; ++i) can be optimized better 
than for(i=l;i<x; ++i) 

► The loop unroller will unroll the first example, 
but not the second. 


Hints & Tips - EXE Size 


► Choosing Compile Options 

- /Gd+ 

> Links dynamically to the runtime library - no copy of the 
library in your EXE 

- /0+ /Gf+ /Gi 

> Turns on full optimizations - results in much more compact 
code. 

- /Gh- (default) 

> Turns profiling hooks off (These take 6 bytes per proc) 


continues ... 


Hints & Tips - EXE Size 

(continued) 

► /Gw- (default) 

- Does not emit FWAITs after each FP load and 
store, (only useful when you require precise 
reporting of FP stack underflow & overflow 

► /G3 (default) 

- Optimizations performed specifically for the 486 
often result in larger code due to alignment 
considerations on the 486. 


Hints & Tips - EXE Size 

(continued) 

- /Ti- (default) 

► Debug information can be larger than the 
executable code. 

- /Ts- 

- /Ts disables some optimizations that confuse the 
debugger. They also save 8 to 12 bytes each 
procedure. 


continues ... 


continues ... 




Hints & Tips - EXE Size 

(eontinued) 

* Other Techniques 

- If you don't use the envp argument to main, create 
an empty _setupenv function 

- If you don't use the argc and argv parameters to 
main, create an empty _setuparg function 

- Use #pragma strings(readoniy) 

* Will result in more compact code from string 
built-in functions. 


Hints & Tips - C++ Specific 

► Improve memory usage by: 

- tailoring your own new and delete operators 

- allocating memory for a class before it is required 

- avoiding the copying of large complex objects 

► Use the /Gx+ option to suppress the generation of 
exception handling code when it is not needed 

► Only use try blocks when necessary because they 
can inhibit optimization 

► Consider making small virtual member functions 
non-virtual if more than one called in a row 

- non-virtual member functions can be inlined 

- a switch to determine type of object is done once 

► Avoid performing a deep copy if a shallow copy is 

al! that Sq rpnnirpH 


Debugging Optimized Code That's its 


► turn off instruction scheduler with /Os- 

► do not rely on the monitor windows for the values of 
variables 

- values may be kept in registers and only 
occasionally stored (or may never be stored) 

► static or external variables can be monitored at 
function entry and exit points 

► use mixed mode and registers window within the 
debugger 


I know the pace of this presentation was fairly brisk, and the 
subject matter quite technical. I thank you very much for your 
attention. This seminar will be repeated each day of the 
conference, and you are welcome to attend a second time if 
you believe it will help. 

In the unlikely event that we aren't already 10 minutes 
over-time, I’ll be happy to field any questions. 

Thanks again from the entire C Set ++ Optimizer team: 

Cheryl Fraser, John Keenleyside, Glen Lalonde, 

Stephen Lauzon, Jim Lemke, Hester Ngo, 

Vijaya Singh, Kevin Stoodley 







CC06 


CC06 Performance 
Tuning with Extra from 
C SeH+ 

John Hidden 
David KoSpek 
IBM Lexington 



Trace Generation Functions 


- System calls tracing 

- Trace calls to PMWSN, PMGPI, and 
DOSCALLS 

- User Events 

- Extra accepts calls from the target 
application and places the parameter 
string into the trace file 

- Trace File Access Calls 

- DosOpen, DosRead, DosWrite, 
DosCSose, and DosDupHandle 

C Set++ Extra 


Introduction 

■ Improve performance 

- Understand your application 

- Indicate where deadlocks occur 

= Trace multi-threaded Interactions 
* Indicate exceptions 


C Set++ Extra 


Preparing an Application 

> Generate "profiler hooks" with the 
/Gh compiler option 

- Generate debug information with the 
U\ compiler option and IDE linker 
option 

> Link In dde4xtra„obj 

■ Optionally, link in system Intercept 
libraries 

■ Install dde4xtra.sys 

C Set++ Extra 


■ Profiler hooks are placed in the 
proSog code of each function 

■ Extra hooks the return address for 
the function 

■ Trace events are stored in memory 

- Trace events are periodically written 
to disk 

- Trace analysis programs are used to 
analyze the data 

C Set++ Extra 


Statistical Summary Display 

■ Statistics available by function 

- Total execution time 

- Total active time 

- Execution and active time as a 
percentage of total time 

- Minimum,maximum, and average call 
time 

- Total number of calls 


C Set++ Extra 


Statistical Summary Display 

■ Textual report of execution time by 
function 

» Summary Information 

. Number of executables, functions, & 
threads 

. Maximum nesting depth per thread 
. Total time 
♦ Total events 
. Number of user events 
. Percent time per module 

C Set++ Extra 

Call Nesting Diagram 

■ Hierarchical display 

■ Application’s execution as a vertical 
series of function calls and returns 

- Context switches between threads 


C Set-H- Extra 







Call Nesting Functions 

■ Pattern Recognition 

- Call Nesting diagram allows data 
reduction 

■ Annotation 

- Add comments to Call Nesting diagram 
- Call Stack 


Time Line Diagram 

- Hierarchical display 

■ Similar to Call Nesting diagram 
a Time stamp Information used to 

place events along the vertical time 
dimension 

■ Context switches between threads 

- Provides chronological 
relationships between events 


C Set++ Extra 


C Set++ Extra 


Execution Density Diagram 

■ Execution time is displayed as a 
fixed number of horizontal time 
slices (scan Sines) 

■ Functions are assigned a fixed 
vertical column 

- Time slices are colored across 
functions to show the percentage of 
time each function used within that 
slice 


Dynamic Call Graph Diagram 

■ Graphical display of the application's 
execution 

■ A function is represented by a node; 
calls between functions are shown 
as arcs between the nodes 

■ The color and size of nodes and arcs 
depict the time spent in the function 
and the number of calls between the 
functions, respectively 


C Set++ Extra 


C Set++ Extra 




Additional Features 


- Call stack depth 

■ Trigger functions 

- Buffer wrap 

- Time-out controls 

- Filtering 

■ Search for functions 

■ Print screens 

■ Correlation 

C Set++ Extra 


Future Directions 


■ Integrating window 

- Trace dynamic DLL loading 

- Start/stop trace 


C Set++ Extra 



Corttrsinnieatiens Manager/2 


COMMUNICATIONS MANAGER/2 
The Power of Personal Networking 


George Sweeney 
Enterprise Workgroup Computing 
Research Triangle Park, NC 


* Features & Functions 

User Environments 

> Co-Existence With Other Products 

* Future Directions 

> AdditionaUnformation 



Gateway 


Provides LAIN Workstation Access to Host 
Supports up to 254 Logical Units per Physical Connection 
Supports Multiple Host Connections, up to S 
Supports Dynamic Addition or Update of Workstations 
Without Reconfiguring 



Connectivities 


Oats Compression Support 
~ Improves Effective Transfer Pats 


at Session Level 

ttsas Hun Length Encoding (RLE) 
and LempheLZIv **tt (LIB) 


W;de Area. Connector (WAG; Adapter Supped: 
~ Pmvidec 64 Kbps Capably 
Supports 2 SDLC Urns 



Async SNA Phone Connect Scenarios 


• LU 6.2 AjjftHeatlwis (5258 Bn.} 

► ssm Applications {AS/400 Pm®mw) 


bs/bqog 

1? 


USMOC 


imWQ 


/ V 


Async. 

m^ m 


APPN UN 



Advantis Network 


^ / 

/ ^ 



Road 
End-User 


VTAM 
NCP 
Host : 


Home or Small 
Office 



AutoSync or Sync SNA Phone Connect Scenarios 


mA Applications f3&70 Em.) 
LU 6 SL applications (5250 Em.) 


VTAM 
NCP 
Host: | 


ASpfi 


ftS/4® 


Advantis Network 


Public Analog Network 


APPNNN: 


Home or Small 
Office 


AutoSync or Sync access to X.25 networks 



Programming Interfaces 


- System and System Services 

- Communications Manager Kernel 

- Common Service© 

- System management 

- SPA Bouter/HOP Services 

> Communications 
. — EHLLAPI •, 

"~8RPf. 

-tUA 
-APPC 

* Full duplex Conversations 

* Non-Blocklrig Verbs 
-CPI-C Level 2.0 

- ACDI : 

- X.25 

- HeaNime interface Co-Processor (HTfC) 

- mm 












WT®m$§2m 
~ Same Look and Feel 
- Dynamic Bon Time Options 

% Hot Spots, Pop4Jp Keypads 
-^ytomatio Font Selection 


- .Session Level Encryption. 

-Up to 26 Active Sessions (OS/2 2,t) 
-Mono-Driven Fife Transfer 

- Response Time Monitor 

- PCMCIA Support 

- Import/Ejcport Support 

- integrated Host Graphics 


t Assist tor PC Support 


Packaging: 3.5“ Diskettes 





■ CM/2 Product Code 
CR^2 Applets 
MTS /2 Product Cede 

SOFTERM Custom Plus, ASCII Emulator 
Installation and Configuration 
.Quick: Install Card 

• User's Desk Reference 
J*:f Quine Publications. 

“ Command Reference 

• \ Messages Reference 

■ -Overview : 


- Problem Determination Guide 
Configuration Map Poster : 
Publications Order Form 


► Korean (Standard) 
• Seaman 


- Double Byte Character Set Version 
- Ctiloose (J radittonal.) , . 


«Korean (KS) 








Packaging: C f 




• €M/2 Product Code 

- CD-ROM Installable 
~ Diskette Images 

► Cm Applets 

• APS: Support Code 

MTS/2 Product Code on CD-ROM 

• S0FTEM Custom Plus, ASCII Emulator 

• installation and Configuration ■■ ■ ■■; 

• Quick Install Card 

sk Reference 

- Online Publications 

- Command Reference 


- Overview 

- Glossary 

- Problem Determination Guide 
Configuration Map Poster 

• Publications Order Form 






































Multiple Host Connections 



Host«based Applications 
&ppcim~c Applications 


cm 

Gateway 


WfeiltipieUnk to Same Host 
-Ilor© thap 254 dependent Liis 


Imk to Multiple Hosts 


Gateway Provides Traditional 
SNA Client/Server SiSodei 


APPC and CPt*C Implement 
Cilent/Server Applications 


AWGiCtn-C Application 


mmuma 


Features & Functions 


AnyMfit 


User Environments 


TCP/IP 


Co- Existence With Other Products 


Future Directions 


AnyHet/21 


CM/2 

Gateway 


CM/2 


Additional Information 


AppUttetteo* 


AppSeattorfs; 


. Apj#cafl6ns 


AnyNet/2 8ac$uirad Only at Gateway 

Allows Current Applications loti se TCP/IP Networks Unchanged 
;Can Be:U$ed;in ftix&i Environment - .S&A: and, TCP/IP ;; 














RouteXpancter/2 


LAN Distance 



wmm 


CMJ2 

Cfcatttway 

























Future Oonsideraftioris - Paelaglrsg 


packaging 
-Emulators 
-Gateways. ■ 

- Programming Interfaces 


Future Considerations«Function 


ilHA/APfinhancsments; 

~ Transmission Priority 

- Dependent LU fteguester 

- LU6,2 Enablement 

*Session Level Encryption 
, v: V Sync.Powt 

Connectivity Enhancements 

- SMA Phone Connect :: 

-SDIG 

Exploitation ; 

- Gommunications API's 

- System and System Services APIs 

Adapter Support 

- Deep Adapter Ena Moment 
Shallow Adapter Enablement 


32-Bit Application Development 


ecpres^dConceps 
* C -Compiler Su ppm 

.£ 16-Bit System 
Semaphores 

~ Awareness of Underlying 
/■Environments 

- Migration of Applications 
; to32-Bit Environment 


Possible Priority for 

32-8itAPrs 

:i EHELAPI 
-CPI-C 
-IUA ; ; 

- APPC 

- ISD^I ' 

-KJ5 /' 

,~A GDI 


Workplace OS Communications 


Which 

API’s? 


What New 
Features? 


What 

Connectivity? 


[What Protocols? 


„„,fte®ds For The Future 
























*• Features & Functions 
| User Environments 

- Co-Existence With Other Products 

- Future Directions 

- Additional Infer? 


The Power of 


The Communications Leader |||M 

forOS/2 1 



Communications 
Manager/2 8K' 


Personal 


Additional information 


»> . ■ . ■ ■ ' ■ : . 
CMOS - Complex Configurations 

IQ> t ■ • OfctotJTS 

and Problem : Determination 
: CSOfl - SJ4A ©lient/Server In ; 

Communleations Environment 




















CMSI~TUP Command Syntax 


► Installation/Conligyration Overview 


CMSETUP parameters 


The correct syntax for the CMSETUP command is: 
CMSETUP 

/C configuration_file 
/I configuration_file 
/D drive (/0) 


► installing other products 

- Se® Read Me - OS/2 and Other Prerequisite 
Produc t Fixes 

* DB2/2 prior to 1.06.1 and LAN Distance 1.0 

- See What’s New - Coexistence with Novell 

► Selective install 

► RIPL support 

► CMSETUP command 


All parameters are optional. 


The parameters are described as follows: 


(/C conflguration_file) - Create or modify a configuration. 


(/I configuratlon_file) - Install a configuration. 


(/D) drive - Remove Communications Manager/2. 
(/Q) - Do not display any messages while removing. 


(/K) - Remove files not required by the default configuration. 


(/R response_file) - Perform a remote installation. 


O 























Installation/Configuration documentation 


Ship group documentation 

► Qu ids Installation reference card (SX75-008S-01) 

► Workstation Installation and Configuration Guide ($031-7169) 

Separately orderable 

► Network Administration and Subsystem management Guide 
($031-6163-01) 

► Host Connection Reference (SC31-6170-1) 

► Host Print Guide ($031-7145-0) 

► Version 1.1 Enhancements (STSC Red book GG24-4142) 

► Integration of Common OS/2 Communication Products (GG24-4005) 

Online documentation 

► Command Reference (describes device drivers) 

* READMEJNF (use VIEW facility) 

* What's New m CM/2 1< 11 (use VIEW facility) 

* Now Do I (selaci from emulator help) 


Agenda 



► Installation/Configuration Overview 


► Installation/Quick Configuration Demo 

► Distributed Feature 




► Problem Determination 


CD-ROM 

contents listed under Diskettes, plus: 

CM/2 publications 

MTS/2 (for direct install or building diskettes} 

CM/2 Eedbooks, NTS/2 publications, and SNA publications 


Diskettes ^ 

8 Product Diskettes 

2 Productivity Aids Diskettes 

1 Softerm Custom Plus (ASCII Emulator) Diskette 

3 Network Transport Services/2 Diskettes 


Separately Order: 

1 API Support Diskette 

1 Network Administrator Sample Programs Diskette 


Demo Overview 

► Install Communications Manager/21.11 
- Install from diskette images 

► Configure for 3270 emulation 

Communications Manager/2 Polder 
3270/5250 Session Management 
Emulator Functions 
CMSETUP Window Options 





















Snstafl/Conffgure window flow 


List of windows during demo 

1. <Communications Manager/2 Logo> 10 configuration definition 

2. cCopymg product fifes> 

3. clnstalfation notes> 

4. Target Drive 

5. Setup (configure) 

6. <Copytng files> 

7. Open configuration 

8. <Greate new configuration?> 

9. <Use for this workstation?> 


11« 3270 emulation (TR) 

12. Begin install process? 

13. install 

14. Additional functions 

15. Change CONFIG,SYS? 
1S.<Copying files> 

17. Completion 


<...> not included in handout 



m Communications Manager Setup 


Communications Manager Setup 


If you do not have a configuration, select SETUP to 
create one and optionally install the necessary product 
files. If you already have a configuration, select either: 

SETUP to modify the configuration and optionally install 
the necessary product files, or 

INSTALLATION to install the necessary product files. 

If the configuration is from a previous release, it will be 
upgraded automatically. 


Create or modify a configuration 


Install necessary product files to 
support a configuration 


Installation. 


! Target Drive Selection 


Select a target drive where the Communications Manager product 
files will be installed. 

Note: The Communications Manager product files will be installed 
in a subdirectory called CMLIB on the drive you select. 

Workstation type: Single User 


Workstation Disk Space 

Drives CM Version Type Available 


C: 29/19 KB H 

D: 

CM/2 1.1 

Single User 

4419 KB 

E: 

Unknown 


10727 KB 

S 


~P1 )ga _ 

m 

~P1 IP El 


i M l C Close | | Help | 


Select Drive, then Select OK 


Open Configuration 


Either type in a name and description to create a new 
configuration or select a configuration from the list below. 
Select OK when finished. 


Configuration |PEMO | 

Description |3270 emulation over Token Ring 

Directory IfjPACMLIB _______ 


Directories 


Configurations 


DLL 

LOCK 

[A:] 

[C:] 

[D:] 


DEMO 

TR3270 




I E I 


I Help | 


Select existing file or 


Selected configuration OLDCFG 

Selected configuration version level Communications Manager/2 1.0 

The selected configuration Is not at the current version level. 

It must be upgraded to be utilized In the Communications 
Manager/2 1.1 environment. 


i Backup selected configuration Backup name |CMI9CFG| j 
OK | | Cancel | | Help | 


ill in new name 























OS/2 Communications Manager 


Configuration Definition 


5250 Emulation through Token-ring 
APPC APIs through Token-ring 
5250 Emulation through Twinaxial for AS/400 
3270 Emulation using SNA Phone Connections 


||3270 emulation through Token-ring to a host 


Configi 


Close 


| Options Gateway Help 

.-Definition selection- 

Commonly used definitions 

^ Additional definitions 

To configure any of the items listed, 
select one and select Configure. 

Select Close when the configuration 

Is complete. 

Communications Definitions 



Quick Configuration for 327© 






































Install Additional f- Line lions 


Additional Functions 


•Disk space 
Required: 


Available: 


Select the additional functions you wish to install. Functions pre-selected 
are shown as pending. Select OK when finished. 


Select/Deselect functions. Select OK 


.-Function list- 

Function 

Installed 

Size 


AnyNet/2 Support 

No 

155 

KB 

APL Font Support 

No 

270 

KB 

■Command Reference 

(Pending 

! 

KB 

Glossary 

No 

442 

KB 

Host Graphics (GDDM-OS/2 Link) 

No 

401 

KB 

Interactive Configuration Interface 

Yes 

4698 KB 



Completion 


Communications Manager installation has completed successfully. 
In order to use Communications Manager functions, you must 
perform the following steps in the order given: 


If installing from diskettes, remove the last diskette. 
Stop all your running programs. 

Shut down your system from the OS/2 desktop. 


Restart your workstation after shutdown to complete the changes 
requested. 


Change CONFIG.SYS 



[ | Change CONUG.SYS 


The configuration specified requires changes to your 
OS/2 system configuration. 


OS/2 system configuration-—-—— 

^Change COMF8G.SYS; backup copy will be 
made in \CMUB\CONF!G.SYS. 


f j0F l Do not change CONFIG.SYS; changes will be 
stored in \CMLIB\CONFlG.CM1. 


Install/Config changes from CM/21.0 


► Configuration improvements 

- Quick Config specify number of printer sessions 

- Quick Config for APPC 

- SNA Phone Connection configuration 

► Installation Improvements 

- faster unpacking of files 

- selectively Reinstall or Refresh 

- NTS/2 shipped with CM/2 

► CID improvements 

- remove additional functions 

- configure SNA Phone Connection 

- configure Focal Point Support 

- Response File Reference in CM/2 folder 















«► Irtstaltation/Configuration Overview 


► Instaiiafion/Quick Configuration Demo 


► Problem Determination 



► What is ft 

- run multiple workstations from a single file Server 

- central code control 

- minimum DASD on workstations 

- subset of connectivities 


Setting up the LAN file server 

- CMSERVER command after CMSETUP or CMIMAGE /U 

- create configurations for workstations 


installing the distributed feature workstation 

- CM IAN command 

- upgrade of downlevel configurations supported 

- configuration changes permitted after install 

- CID to configure distributed feature workstation 



551 Communications Manager/?' Icon View 


§ 32 70/5250 Session Management - DEMO 


Communications Manager/2 Folder 


3270/5250 Session Management 


Communications Manager Setup 


Remote Operations Service 


" M 1 " Start Communications 


Service Point Application Router 


w Stop Communications Normally 


What's New 


in §E IB Sto P Communications Abnormally 


Read Me 


Manage 3270/5250 Sessions 


Overview 


Replace Default Configuration 


Glossary 


gjjgj Keylock 


Command Reference 


Problem Determination Aids - Trace 


Problem Determination Aids 


Problem Determination Guide 


Subsystem Management 


Message Reference 


Host Graphics Trace Utility 


Host Graphics User Guide 


Session 

Help 




Short 

Long 




Session 

Session 

Session 

Session 


Name 

Name 


Status 

Comment 


3 B 

3270 Non-Coaxial 

Stopped 

: C 

3270 Non-Coaxial 

Stopped ti .[ 

—P a a m 5 



















Communications Manager Setup 
; Options 

I Install additional functions... 


K(Hjl)u.irV|. 

Hoiii.i[>kt:yho).'ii(l;. 


CMSETUP window options 


Emulator Functions 


File Edit Transfer Settings | 
VM/ESA ONLINE 

WELCOME TO THE SOUTH 


Perform keyboard function. 


ilect SETUP to 
necessary product 
ition, select either: 


Remove additional functions. 


E PfiRK 


Hotspots setup. 


Display popup keypad. 
Popup keypad setup... 


Reinstall... 

Remove Communications Manager. 
Remove communications features. 


id optionally install 


View system information. 
View audit trail... 


y product files. 


VV VV MM MM UU UU S _ 

VV VV M M M M UU UU SSS \_/ 

VV VV M M M UU UU _. 

VV VV M M UU UU VM/ESR 2.0 

VMM UUUUUUU RTP SOLUTION CENTER 

USE OF THIS SYSTEM IS FOR IBM MANAGEMENT APPROVED PURPOSES ONLY 
Enter VMEXIT on USERID Line to Return to MDQ Screen 
Fill in your USERID and PASSWORD and press ENTER 
(Your password will not appear when you type it) 

USERID ===> 

PASSWORD ===> 


Recreate folders. 


upgraded automatically. 


Create or modify a configuration 


Setup. 


Install necessary product files to 
support a configuration 


Installation. 


COMMAND 


RUNNING RRLVMU 


Close 


Install Audit Trail 
FFST/2 Message Log 
Bundle log file 
CM/2 Fixes 


► Installation/Configuration Overview 


CM.tOC, 
OS2MLOG.DAT 
BXX.t.OG 
FIXES TXT 


► Installation/Quick Configuration Demo 


Distributed Feature 


► Problem Determination 





















Date 02-28-1394 
Originator APPC 
Message number 


Message type 


Process name 


D:\CMLIB\CMSTART.EXE 


Message file name ACS.MSG 

[ACS1231E: The link to remote address 444444444444 could not be 
established. The XID negotiation between the local node and the partner 
node was not successful. 

EXPLANATION: Errors detected during the XID negotiation are preventing 
the link between the local node and the partner node from being 
established. The remote address identifies the partner node. 

USER RESPONSE: One of the following reasons prevented the link from 


Bmrd and Automated Fm Mdmwmn m WMf s New 

> Automated Fax system, in the United States, call 800*426-3395 

> Bulletin Boards 
-QS2CM2 CFORUM 

- In the United States, call 800-547-1283 for TaIkLlnk/0$288$ 

: "to the mm® East, and Africa, use to access OS2Ciyi2 

CFQBUM via COHFBR on OS2BBS 

- Online customer support for CM/2 

; ^Pesodied in fnfonnadoh;::APARf?07033 ; 

- 918-543*8200, protocol Mm 

M 2 {OS2BF2) V ^ 

~ Topic ivOommunic^ohslanper/2-: MfiZj 
~ Oeyeioper Connection, in the United States, call 80O-80BVCOM 
~ APPC For um ' ; 

> Developer's Assistance Program, m the United States, call 808-553-1623 
IBM Software Solutions Center 

- in the United States, calf 800-002-4777 

- }n Canada, call 800-465-2222 

- Outside North America, call 800-426-1774 (IBM International information) 

? f BISUNK, search OttC8®S#@Ml;; 


















Summary 


► Simplified installation/configuration 

► Hardware detection 

► Distributed Feature 

* FFST/2 for problem determination 
Submit suggestions for improvement 

► Give it a try! j 







CM03 


Agenda 


Communications Manager/2 
Complex Configurations 


CMQ3 


Don Richards 
Rick Schertz 

Research triangle Park, NC 


► Advanced Configuration Overview 

- 3270 Configuration to multiple hosts 

► Gateway Configuration 

► 5250 Configuration including async dialup 

► CIO Support 



Advanced Configuration 


► Required for some configurations 

► Select ‘Advanced...’ pushbutton or 'Options’ on 
menubar 

► Guided profile lists 

► Checkmarks 


Configuration Definition ‘Options’ 


figuration Definition DEMO 


Change workstation information.. 


Use advanced configuration 


Verify configuration 


To configure any of the items listed, 
select one and select Configure. 
Select Close when the configuration 
is complete. 


Communications Definitions 


3270 Emulation through Tok 


5250 Emulation through Token-ring 
APPC APIs through Token-ring 
5250 Emulation through Twinaxial for AS/400 
3270 Emulation using SNA Phone Connections 




1^3270 emulation through Token-ring to a host 


Configure... | | Close ' 






r, Communications Manager Configuration List 


Configure any profile or feature 


To configure any of the items listed in the listbox, select one or 
more items and select Configure. 

Check marks indicate configuration for an item is complete. 
Profile or Feature Name 

Gateway - Implicit workstations using the gateway 
Gateway - Explicit workstations using the gateway 
X.25 links 

X.25 directory entries 
X.25 routing table 

SNA Phone Connect - Connection Manager 
SNA Phone Connect - Port Connection Manager 
SNA Phone Connect - Protocol Driver 
ISDN - LAN protocols using ISDN 
ARTIC adapter without X.25 


Configure. 


OBJECTIVE 

- Review quick configuration windows 

- Configure 2 token-ring sessions, each to a 
different host 

- Configure 1 printer session 


- PROCEDURE 

- Type CMSETUP or Select CM Setup ICON 
7 Select 'Setup' pushbutton from CMSETUP 

- Choose configuration name 

- Select 3270 emulation through Token-Ring 


Agenda 


► Advanced Configuration Overview 

► 3270 Configuration to multiple hosts 

► Gateway Configuration 

► 5250 Configuration including async dialup 

► CSD Support 























! 1 Communications Mi-umcjor Profile 1 ist 


3270 Emulation through PC Network 


1?70 FimiUMiin ihrouph f oiixiiiKDm 


3270Tnuilation through Pthfrnei (f WRAIID) network 


3270 Emulation through Token-ring 


3270 Quick Configuration 


3270 Profile List 


Number of terminal sessions 


Number of printer sessions 


| OK | | Advanced... | | Cancel | | Help | 


Network ID 


§§3270 emulation through token-ring to a host 

All profiles listed as Required MUST be configured to support the pictured 
configuration. Check marks indicate configuration for a profile is complete. 

Action Profile Name 


Local node name 


Network ID 


node name 


■Connection information- 


LAN destination address (hex) 


Required 

Required 

Required 

Optional 


SNA local node characteri 
SNA connections 
3270 emulation 
3278 SRPI 


Number of terminal sessions 


Number of printer sessions 


OK Advanced. 


Configure. 


Fill in values, select ’Advanced 


Local node ID (hex) |05D 11 | 

i-SDLC information- 

SDLC modem type £ Switched # Non-swltched 
Station address (hex) |91 | (81 - FE) 

Number of terminal sessions |l | 

Number of printer sessions □ 

j OK | | Advanced... | | Cancel | | Help [ 



I .-ocal'ilnde .Characteristic 


I Ok on Rincj or Other I AM I gpos Rl C Adapter Parameters 


I nr.il l lrxie Op l iens 


SNA Local Node Characteristics 


Adapter |o~j« | 

fi Free unused links 

M Send alert for 
beaconing 

M Maximum activation 
attempts 

Maximum link stations 


Network jD 


lUSNETID 


■Window count- 

Send window count 


Local node name 


IXID12345 


Receive window count 


-Node type- 

JjEnd node to network node server 


no network node server 


^Network node 


Maximum [-field size 


Percent of incoming calls (%) |0 j (8 

Link establishment 

retransmission count [8 | (1 


Local node ID (hex) |95D | |12345 | 

| OK | | joptions... | | NetWare(R)..~] | Cancel | | Help | 


Retransmission threshold 


|8 | (1 - 127) 

|04 | (04 - 3C) 
lUSNETID) I 


Local node alias name 


|XID12345 


Maximum compression level |NONE 
Maximum compression tokens |9 
Optional comment | 

tt Activate Attach Manager at start up 
I OK I | Cancel"! I Help 1 


C&SM LAN ID 


3809) 


Connection network 
name (optional) 


Cancel 






























| CohnocUons List 


Adapter Hist 


| Connection to a Host 


SI 3270 Emulation 


3270 Logical Terminal Untitled 


Create a Connection 


Create a Connection, 


Choose the type of node to change or create connections 
to nodes of that type. 

Selecting a partner type will display connections to 
nodes of that type in the list. 


Select the local adapter to be used for this connection. 


[HOST00O2 


M Activate at startup 
Local PU name |MPUQO001 | * APPN support 

Node ID (hex) |05D| | ] 

LAN destination address (hex) Address format Remote SAP (hex) 

1 | |Token Ring ~~J B | |04 | 


ithernet (ETHERAND) network 


•Partner type-— 

£5 To network node 0To fieer node ^Tohost 


PC Network 
Twinaxial 

SDLC Adapters 0,1 Regular or User-dialed Connections 
SDLC using SNA Phone Connections 


Adapter 

Number 


lame Adapter 

iQST 9801 | Token-ring or other LAN tiipes 


Adjacent node ID (hex) 


Partner network ID 


Configured No 
Adapter number llT 


_ (Required for partner 

Partner node name | | LU definition) 

MUse this host connection as your focal point support 
Optional comment 


Continue... Cancel 


3270 Emulation, 


File View Options Transfer Help 


Short session name 


Short Long 

Session Session/LU 

Name Name Type Keyboard 


Optional comment 


-Type of connection- 

J*5Coaxial (DFT) Session number |~| k | 

^Non-coaxial Host link name |hqST0991 

LU local/NAU address □ (1 - 255) 


Color 


LT ACSCENUS 


3270COLR 


LT ACSCENUS 
LP 


3270COLR 

3270COLR 


-Presentation space size- 

5*525 x 89 (3278 / 79 mod 2) 
5*533 x 80 (3278 / 79 mod 3) 
5*544x 89 (3278 / 79 mod 4) 
£528 x 132 (3278 / 79 mod 5) 
J*5 Other R,»« Eli: 


i Auto-start 

S Activate presentation space print 
Options 


Enter a name under which you would like 
to save this Information. 


Character mapping 
)ata transfer buffer size override 
Vint options 
Vint style 

tuntime window status 


^Logical terminal 


Long session/LU name |LONGNAME 
| OK | | Cancel | | Help | 


^Logical printer 


Cancel 


Save as... ( | Cancel | | Help | 


Select ’File' from menu, Select ’New' 


Comment [§| 


i 

J Create... | | Chang;::... 

| | Delete ] 

| Close | | Help | 





















{ J2/0 Logical Prinler Untitled 


Session I yj>e 


j Keuboard UtilitLi - ACSCENUS 


IHormal, Unprotected 


Comment 


|IBM Enhanced Keyboard - United States] 


$ Logical terminal 
& Logical printer 


Short session name 


User-defined workstation 
code page for display 

| OK. . | | Cancel | 


Optional comment 


•Type of connection 
& Coaxial (DFT) 
^Non-coaxial 


OK Cancel 


Host link name |HQST0Q01 _ 

LU locai/NAU address | [ (1 - 255) 


Auto-start 


Options 


Code pages 
Print buffer size 
Print options 
Print style 

SNA data compression 


Change. 


Cancel 


► 3270 Configuration to multipi® hosts 


► Gateway Configuration 


FI ||f2 F3 ||f* F9 F1 ° I 11 

T 

nm nnnrnnrnm 

■ o w e 717717 i TT7iTT 
■jJk iliiibiLL ihJLLl 

State Definition 

Shift: [F241 
Base: [FI 2] 

Alt: [+Cr] 

Ctrl: 

AltGr: 

Niiml l:' 























































Gateway Overview 

► Access host resources for downstream workstations 

- up to 5 different hosts (Fiji’s), 254 sessions per PU 

► Concentrate host definitions at the gateway 

► Workstations access host via different media 
*• Gateway can also be network node server 

Downstream workstations supported: 

- Communications Manager/21.0,1.1 

- Extended Services 

- Personal Communications/3270 2.0,3.0,3.1 

- 3270 Emulation Program Version 3 

- 3270 Workstation Program Version 1.1 

- NS/DOS Version 1.0 

- Other vendor products 


Gateway Terminology 

»- Dedicated LU 

- permanent reserved LU from downstream workstation to 

host ill: . 

»- Pooled LU 

- group of LU's from the host 

- downstream workstation use next available LU from the pool 

► Explicit Workstation 

- define every downstream workstation at the gateway 

► Implicit workstation 

- gateway definition dynamically created 

*• Dependent LU's supported 

- 3270 emulator 

- LUA applications 

- LU 6.2 dependent LU's 


Gateway network picture 



Gateway Configuration 
► OBJECTIVE 

- Configure Gateway Host Link 

- Configure Gateway Workstation Link 

* PROCEDURE 

- Type CMSETUP or select CM Setup SCON 

- Select 'Setup' pushbutton from CMSETUP 

- Choose configuration name 

- Select 'Gateway' from Menu bar 

- Select 'Configure' 












; iot is. (•I.in;-K]cr Pro Mi e l is l 


jf»HA local node ch<iracterist-ics 


| [ Host LU Pool Definition 


Gateway Hast LU Pools 


LUPOOL 030 100 - 200 


Host NAU Address Ranges 


(^Gateway network communications definition 

All profiles listed as Required MUST be configured to support the pictured 
configuration. Check marks Indicate configuration for a profile Is complete. 

At least ONE of the profiles listed as ^Required MUST be configured. 

Action Profile Name 


Required 

^Required 

^Required 


Gateway - Hosts and host LU pools 

Gateway - Implicit workstations using the gateway 

Gateway - Explicit workstations using the gateway 


Configure. 


Gateway Host LU Pool Definitions 


Host link name HOST8091 


Auto Host 

Logoff NAU Address Ranges 


Change. 


Automatic logoff 
jff, None 


Timed Minutes 


Start NAU address |19Q 
End NAU address |29Q| 
j QK j | Cancel | | Help | 



Gatov/ay Hosts and Host LU Pools 


Gateway Hosts and Host LU Pools 


To create or change gateway DLCs and workstation links, select Links. 
To create or change workstation LUs, select an existing workstation link 
and then select LUs. 

To delete a workstation link and its LU definitions, select an existing 
workstation link and then select Delete. 


Workstation Number ol 

Link Name Workstation LUs Comment 


pDLC configuration-———- 

Select a DLC type and adapter number for the logical link definition. 
DLC type |t oken-rlng or other LAN types | B | _ 


Configured adapter numbers |9 |b| 


rAvallable logical links--—_ 

To create a logical link definition, select Create. To change or delete 
a link, select a link name from the list, then select Change or Delete. 

To configure workstation LUs, select a logical link to use 
in the workstation LU definition, then select LUs. 


| Close | | Help | 


| Change.."] 


DLC configuration- 

Select a DLC type and adapter number for the logical link definition. 
DLC type |t oken-ring or other LAN types | B | _ 


Configured adapter numbers |s |b[ 


Available logical links- 

To create a logical link definition, select Create. To change or dele 
a link, select a link name from the list, then select Change or Delete 

To configure optional host LU pools select a logical link to use 
in the host LU pool definition, then select Pools. 


To create or change gateway DLCs and host links, select Links. 
To create or change host LU pools, select an existing host link 
and then select Pools. 

To delete a host link and its pool definitions, select an existing 
host link and then select Delete. 


Host Number of 

Link Name Host LU Pools Comment 


■HOS i 

8 


HOSTOOOI . 000 


Remote; SAP (hex) 

























































Implicit Works? jtions Using the C.atev/ai|, 


Implicit Workstation* LUs 


Workstation LU. Definition 


implicit Gateway Workstations, 


Implicit Workstations Using: the Gateway 


Select the DLC type from the choices below. You may select 
Configure DLC to configure that DLC type. You may also select 
Implicit LUs to define the Implicit Workstation LUs. 


Workstation link name WKSTOfifil 


Select Create to create an implicit workstation LU definition. 
You may also select an existing implicit workstation LU from 
the list to Change or Delete. 

Implicit LUs over Token-ring or other LAN types 


-Workstation LUs- 


LU Workstation Host Host Pool 

Name HAU Address Link Name NAU Address Name 


DLC LUs 

Configured Defined 


Host link name 


■Implicit workstation LUs- 

Host Host LU Workstation 

Link Name Pool Name NAU Address 


VII configured DLCs 


Workstation link name WKST8881 


LU name 


WKS1LU2 


Workstation NAU address 


Optional comment 


JCPooledJ Pool name 

% Dedicated Host HAIJ arlrires- 


Optional commenl 


Close 


Host link name 


IHOSTG001 


Pool name 


ILUPOOL 


Workstation NAU address 


Addresses mobile computing environment: 

- use SNA applications from home, traveling, or 
wherever there is a phone line 


► Advanced Configuration Overview 


3270 Configuration to multiple hosts 


Connectivity supported: 

- SNA applications over asynchronous lines 
(Switched/Non-switched) 

- SNA applications over synchronous lines 
(Switched/Non-switched) 

- Hayes AutoSync protocol support 

- ¥2S,bis Autodial and Autoanswer 


► Gateway Configuration 


► 5250 Configuration including async dialup 


CID Support 



































Asynchronous Connectivity Support 
~ Workstation with COM port or Adaptors configured as 
semi port and Modems 100% compatible with Hayes AT 
command set 


Synchronous connectivity support 
- bit oriented I L25bis Autodial and Autoanswer for 
synchronous modems that implement VJtSbte 
~ Synchronous adapters 

v IBM Multiprotocol Communications Adaptor for ISA bus 
» IBM PS/2 Multiprotocol Adapter/A for Micro Channel 
* IBM WAC for Micro Channel and ISA bus 


► Hayes AutoSync (SDLC and X.2S) 

~ Workstation with COM port or Adapters configured as 
serial port and Hayes Compatible AutoSync Modem 



► OB JECTIVE 

- Review quick configuration windows 

- Configure 2 sessions, each to a different 
AS/400 


PROCEDURE 

- Type CMSETUP or Select CM Setup ICON 

- Select 'Setup' pushbutton from CMSETUP 

- Choose configuration name 

- Select 5258 Emulation using SNA Phone 



.’‘id I mill.iiiiin thrmiijh l J ( network 


')/>'.Lj;iulii!iui~ llU'Hii|li l : wijiijx-j: lor 


5250 l.iiuilMlion lliroui)h E Ihornoj (F I HI.RAHI)) Me'tv/ork 


‘ij‘ o i,iimi.n<f»n tiifnii|i), ! .i>rG 


5250 Network Layout 


5250 Quick Configuration 


Network ID 


Network ID 


Network ID 


AS/400 2 

(USEAST.AS4002) 


-5250 informatlon- 
Partner LU name 


Local node ID 


-5250 Information- 


Partner LU name 


APPN 

Network 


-5258 Information- 


Partner LU name 


■ Connection Is to a network noc 


Mode name 


Host type Information r f, AS/400 #S/36 


Host type information AS/408 Jg/s/36 


■ Connection is to a network node server 


■ Connection is to a network node server 


-SDLC information- 


SDLC modem type ^Switched Jfllon-switched 
Station address (hex) fjjT] (01 - FE) 


-Connection information— 
LAN destination address 


Number of terminal sessions 


Number of terminal sessions 


Number of printer sessions |p | 

| OK | | Advanced... | | Cancel | | Help | 


Number of printer sessions 


Ik] I Advanced.. 


AS/4001 

(USEAST.AS400NN) 


rTwinaxial information- 

Controller address [F] (0 - 6) 

1 llhis 

is a PCMCIA compatfcle m< 

Number 

of terminal sessions [T^ 

Number 

of printer sessions [iP 

E 

| Advanced.. | | Cancel | 





















5250 SNA' Phone Connect Quick Configuration 


5250 Profile List for SNA Phone Connect 



. 5250 Emulation: using SNA- Phone Conncejions 


Network ID 
Local node name 
Local node |D (hex) 


|USEAST 
|RAL 12345 
[05D 1166668 


p5259 information- 

Partner LU name |USEAST.AS499NN 

Mode name |QPCSUPP ~| I B I 

Host type information # AS/400 3*5 S/35 

g Connection is to a network node server 

pSDLC information- 

Modem connection |AutoSync 

Station address (hex) ED (01 - FE) 

Number of terminal sessions |l | 

Number of printer sessions |0j | 

| Continue.."] | Cancel | | Help | 


Modem Connection Information 


Modem Definitions 

IBM PCMCIA Data/Fax Modem 

IBM PCMCIA High Speed Data/Fax Modem 


l|BM PCMCIA 14.4Kbps Data/Fax Modern 


BM PS/2 14.4Kbps Data/Fax Modem Adapter 
Practical Peripherals PM1440OFX PS/2 Internal Modem 
Practical Peripherals PM14400FX V.32bis Internal Modem 
Practical Peripherals PM9600FXMT Modem 
User-Defined AutoSync Switched Connection Modem 


Phone number 
Alternate phone number 
Port name 
Encoding scheme 
■ Inactivity timeout 


|C0M1 111 

|NRZ1 | ■ | 

| | f i - m. 


ii } f.omm uni cations Man acjor Profile I 1st 


OK Advanced... Cancel 



(§5250 emulation using SNA Phone Connections to an AS/400 or a S/36 

All profiles listed as Required MUST be configured to support the pictured 
configuration. Check marks indicate configuration for a profile is complete. 

The Connection Manager profile listed as ^Required should ONLY be 
configured for switched connections. 



Select profile, then 'Configure. 



Port Connection Manager Configuration 


Connection Manager Configuration 


.Outgoing: Call Directory Entry 


lljodem/Liire characteristics 


lltl-l I*;;/'/ I'l.'lKbps |)ata/l ax MoHem Arlapb 


|Mudeiii/l me charm: I eris lies 


Connection Manager 


Port Connection Manager 


The PCM list is based on the Modem connection you select. Select a PCM, then select 
either Configure to add the PCM information to the configuration or Delete to 
remove the PCM information from the configuration. 


Entry name |SNAPHQNE_l]~ 


Modem connection |AutoSync 


Currently Configured Subfields 


PCM 

>BM PCMCIA 14.4Kbps Data/Fax Modem 


Status 

Not configuij 


’radical Peripherals PM14490FX PS/2 Internal Moc Not conflgur 
’radical Peripherals PM14496FX V.32bis Internal P Not configur 
’radical Peripherals PM9600FXMT Modem Not configur 

Jser-Deflned AutoSync Switched Connection Mod* Not configur 


'ailed party number 


Cancel 





































SNA Features 


| SNA Features List 


To create, change, or delete a definition of a feature, select a list 
item, then choose the appropriate action. 

r SNA feature information-- 


Local LUs 
Partner LUs 


Transaction program definite 
Transaction program default 
Transaction program securiti 
Conversation security 
LU to LU security 
CPI Communications side info 


BLANK 

ttBATCH 

BBATCHSC 

SINTER 

ttINTERSC 

CPSVCMG 

CPSVRMGR 

SNASVCMG 

ttBATCHC 

ttBATCHCS 




]■] 5250 Emulation 


5250 Emulation, 


|USEAST.AS4002| 


Partner LU name 


File View Options Help 


Short Long 
Session Session 

Name Name Type Partner LU 

A A LT 5250PLU 


Keyboard Color 

ACSCENUS 5250COLR 


QPCSUPP 


WINTER [s| I ACSOENUS 111 I 5250COLR 111 



Bi 0250 emulation 


Duplicfctte Session 


5250 Emulation 


File View Options Help 
Short Long 
Session Session 

Name Name Type Partner LU 


Keyboard 


Color 


5250PLU 


QPCSUPP 


Short session name 


Long session name 


Optional comment 


|SessHon to AS4QQ2 through NN server 



Agenda 


> 3270 Configuration to multiple hosts 

































CID Overview 


► Configuration, installation, and Distribution 

► Unattended installation and configuration of 
OS/2 software 

- Mass instaliation/configuration 

- Application querying/updating configuration 

and installation ............ 

- Help Desk Support ^ 


Communications Manager/2 CID Commands 


► CMIMAGE - copies diskette images to hard 
drive 

► CMRECORD«builds response file from: existing 
configuration 

► CMSETUP /R - install/configure using response 
file 


CID Scenario 


Administration Task 

• Run CMIMAGE 
to copy 

CM diskette files 
to Hard Drive 

■ Create Model 
Configuration 
and Exception 
Response Files for 
Target Workstations 



Distribution Task: 
* Send files from 
Administrator’s 
Workstation to 
CM Code Server 


Installation Task: 

* CMSETUP /R Command Entered 

* Model Configuration & Exception 
Response Files Processed, User 
Configuration Pile Created 


Communications Manager/2 
CID Tips and Techniques 

► Response file migration (/MG parameter) 

► New response fife (/CR parameter) 

► Supported connectivities 

► Using a model configuration 

► Sample response files (UPGRADE.RSP, 
RBNSTLmP} 

► CMUPDA TETYPE = 1 or 2 (works the same) 

► Copying and deleting profiles 

► Working with keyboard profiles 
*> Using CMRECORD output 


» Needed CM Code Installed 
from CM Code Server 























* Installation values 
CMUpdateType = 1 
CMWorkstationT ype = 1 
CMTarget = D: 

CMModelCFG = X:\MODEL 
CMUserCFG « D:\CMCONFIG 


* Configuration values 
Enhanced_keyboard = ( 
name = group2kb 
copy = modelkb 
souree_cfg = X:\model 


GMInstallROPS = 1 
CMtnstallKeylock = 0 
CMUserExit = X:\CMEXiT2 parm 


Enhanced_keyboard = ( 
name = oldkb 
delete 


^ Configuration Utilities 

► Keylock Configuration (KEYLOCK.EXE) 

► Replace Default Configuration (CMREPL.EXE) 

► Verify Configuration (CMVERIFY.EXE) 

► Upgrade Configuration (CMUPGRAD.EXE) 

► Problem Determination 

- PMDSPLAY.EXE, DISPLAY.EXE 

- QSYSTEM.EXE 

- CMOUERY.EXE 

- CHK4DLLS.EXE (Productivity Aid) 

► Copy Configuration 

- OiSBKCFG.CSiD 

: -CMRSTCFG.CMD 

* on Network Administrator Sample Program 
diskette 



► Guided path for advanced configuration 

► Use of profile lists 

► Common configuration interfaces 

► CID support for volume installations 

► Go for it! 



Connection/Feature Combinations 


WKST COmBCVON TYPE VS FEATURE OR APPUCATION 

ConnectionI 3270 5250 ACDI1 APPC CPLC LUA IaODI X.25 

.. .. . ■ _ Redir APIs APIs APIs APIs APIs 

T °mler f i!Sr?!ypes ° Q ^ ^ v/ V 

Ethernet O Q V Q V s/ 

PC Network Q Q ^ Q V V 

Coaxial (DFT) O 

Twinaxial V Q V >/ V 

Asynchronous V . 

SDLC Q Q n/ n/ -J 

X.25 ' ■ s/ V n/ n/ s/ : V 

SDLC using SNA Phone 0 Q %/ n/ s J 

X.25 using SNA Phone "V ^ ^ ^ ^ ^ 

IDLC using SNA Phone ^ ^ ^ n/ 


Q indicates that quick configuration is available 
' y indicates that this combination is available 

















Configuration Fifes 


Oo^fysunJoatiorm Manager Configurmion Rtes ■ | 

"■ File 

Type 

Description 

EE 

ES 

CM ' 

\CML 1 B\config name. CFG 

Binary 

CM configuration life 
containing Non-SNA data 

X 

X 

X 

\CMLI8\configname.NBF 

ASCI! 

CM node definitions file 
confining SNA data 



X 

\CML 1 B\conf igname. CF2 

Binary 

CM SNA configuration file 


X 

; x 

\CM 1 IB\configname,$EC 

Binary 

CM security file 


X 

X 

\IBMGOM\PROTOCOUNI 

ASCfi 

NTS/2 (LAPS) and SNA 
; Phone configuration file 


X 

X 

\CMLIB\NETWORK.INI 

ASCII 

; Port connection 
manager configuration file 



X 

\CMUB\swftchtype.CXM J 

OR 

\CMUB\configname,CXM 

Binary 

; Connection 

manager configuration file 



X 





CM04 


Communications Manager/2 
Building SNA Applications 

CM04 



\BM - Networking Systems 
Research Triangle Park* NC 


_ AGENDA 

• API’s Available 
- EHLLAPl 

. CPI-C 
. APPC 

• Other APIs 


APIs AVAILABLE 


• EHLLAPl - Emulator High Level Language API 

- Requires a 3270 or 5250 emulation session to host 

• GP8*G - Common Programming Interface for Communications 

- SNA LU 6,2 

- Portable toother platforms 

• APPC - Advanced ProgranHo-Program Communications 

- SNA LU 6.2 

• Other APIs 

- LUA - LUs 0,1,2,3 to host 

- System Management - Define/defete/manage SNA resources 


EHLLAPl 



worksiafion-i 

application 


* Applications can act as a programmed operator 

- Simulate users 

- Simplify use ofexisting host applications 

- Monitor response Urn© and availability 

- Consolidate complicated tasks 

- Automate console operations 



iHLLAPI Services 


«Six Service Groups 

- Curator Services 

- Presentation Space Services 
^Device prvices 

- Communication Services 

- Utility Services 

- Window Management Services 


Building an EHLLAPI 
Application in C 


API Support 

- Header file - HAPLC.H in \APISUPP\CM_H on the CD-ROM 

- Library - PHLL.C_S.OBJ in \APISUPP\CM_LIB on the CD-ROM 

Samples on CO-SOM - \APISUPP\HAP! 

- HSMPLC - IS bit C 

- HSMPLC32 - 32 bit 


Other samples on CD-ROM - see \ARSUPP\HAPf.DOC 

- HSM PLM - Macro Assembler 

- HSMPLC8L - COBOL 

- HSMPLBAS-SASIC 

- GMMACRG.CMD - REXX file for record/playback keystrokes 

- QTJMECMD - REXX file that queries the host time 



Programming With iHLLAPI 


References 

- EHLLAPI Programming Reference on CD-ROM 

- VIEW \DQCS\IMREHLLREF 


Language Support 


REXX 

BASIC 

COBOL 

Macro Assembler 


AppUcalioii Support 

- EHLLAPI Virtual Device Driver 

- Run DOS EHLLAPI Appiicatibhs with CM/2 


EHLLAPI Code Example 


Function prototype 


extern void bllapi( m far \ 

:: char far* 
' in! far*, 

in! far*); 


f^ne^ncaftsisttax 

Int apifync~ 3 L. /* send */ 

ciw flpisfilns fMAKJS£EE|; . 

mm 

inf aplret; - . 


;bl£ag$&^tee,; ®g5h&rts& itsplra); 









©©bugging an EHLLAPI Application 


Return Codes 

- Gheek each call's return cede before continuing 

- Documented in EHLLAPI Programming Reference 

• Use CM/2 Trace Facility 

-Start API Irace sweat-EHLLAPI 
-Trace example 

m BEQ 6 HUAPI C«nwctPS< 0 »} 

~r**~ ft&Kdfiaa iw»aoo ie«oirt*«ooi eftaeafKwsooa-cooo 


API W5*> EHUAW Oowwct PS (01$ 
F5C=OOOOt.«=«)Ot l»=O014-«W1 ER~WOO-OOCO-«eOO 

AW WEO £NLLAPi SandKa? \Q$) 
f?6O*(}fiB0 U^cOOOa i&=0014-4}£!0t gR«/»604«KMM»& 


API PSP SHlim Sand Koy(03} 

RC^tKW LK^»62 lC*0S14WK}St1 ERiftQOOdXKHKKm 


Programming With CPI-C 


« References 

- Common Programming interface Communications Reference (SC2&4399-0B) 
~ Application Programming Guide on CD-ROW 

VIEW \DOCSMNF\APPLPROG 

- APPC Programming Reference on CD-ROM 

VIEW \DOCS\JNF\APPCREF 

* Lapgyag® Support 

-c 

- COBOL 
-FORTRAN 

- REXX. ' : 



Common Programming Interface for 
Communications (CPI-C) 


Peer f® peer or eltentfssrvsr applications 

Portable across multiple platforms 

Commtjnieatfens Mensger/2 supports CPf-C Architecture 



Building a CPI-C Application 


• Include Files 

- In \APISUPP\CM_H on the CD-ROM 

- CMC.H * include in C programs 

~ CMREXXGPY - include in REXX programs 

• Libraries 

- In \APISUPP\CM_UB on the CD-ROM 

- CPI&IIB - Link with C programs 

»®2-BK Support^ 

- Documented in Application Programming Guide 

- Supported with IBM C SET/2 compiler 












Writing a CPI-C Program 


C Code Example 


. SAMPLES? SAMPLES! SAMPLES! 

- Located in \APSSUPP\SNA on the CD-ROM 

. C PROGRAMS 

- Build 16 and 32 bit samples 
~ APiNG.DOC 

- AREXEC.DOC 
-AJEtt. DOO 

- CPICRLE.DOC 

• RBmPROQMMS 

- CRCREXX.DOC 


~ Sample C code 

Staeiade r CPl-C «««» f 

ws^nodDiiar kb/hs *Siff^iSstfesamtSonmtm® *i 

/'CPI^cefwawatfealB ♦/ 

C& 8 JNT 32 to; 

r CPS-C & a ea8 based intense® */ 

. ■■ f Feremeteram */ 

"*8J; f 8 cfeam padded with fefcm&s +} 

d{rc™CM..OK){ 

^5h*s cm!r^c«8!rv8assdcc0»®fuJ *■(■ ,,, 

} efcs«{ ' 

/* She cmirdt caii fedied *,< 

handle the em*r send re&jrn */ 

. * 


REXX Code Example 


Debugging Your CPI-C Program 













Include flies 

- In WISH FP\GM_H on the CD-ROM 

- APPCLC.H - verb control block structures 

- APPCDEF.H - constants, opcodes, return codes 


References 

- APPC Programming Reference on CD-ROM 
VIEW \DOCS\!NF\APPCREF 

- Application Programming Guide on CD-ROM 

VIEW \DOCSUNFWPUPRQG 


Libraries 

- In \APISUPP\CMJJB on the CD-ROM 

- ACS.LIB - Link with C Programs 


t|Piyaie;Sypp#it : 


COBOL; 

mmA 


32-BH Support 

~ See documentation in Application Programming Guide 
- Supported with IBM 0 Set/2 compiler 






















Writing m APPC Program 


samples? samples! samples! 

- located in \APiSUPP\$NA on tie CD-ROM 

- APPCTELLDOC - sample APPC program written in C 


* ttafpfy! PrograsfitBilEf Hints 

- Link with either ACSXfB or include import statement In .DEF file 

- APt^ program stack size should be at least 4500 bytes 

- Allocate data buffers in shared storage 

- Multiple processes can share a tpjd 



Debugging Your APPC Program 


Each APPC veifi ha& gurimaif afld secondary retym csxSes 

- Return codes are documented in the APPC Programming Reference 

- Check each verb's primary return code 

- If the return code is not .APjQK then check-secondary return code 

- Secondary return codes provide granularity 


- Start API trace event - APPC 

- Trace, example 


am mmmm awc / , / 

tmmm 

mmm id? i7C3e»S^ A^SPCTSP*' 

mnmm 484^^40 40404040 40404040 <LL4~— 

momm. mom® mmom <.—._ 

mom® mom® mom® 

mmm® Jmmm.- mm . __ 


%2‘A2imm 





Other CM/2 APIs 


* LUA' - Conventional Logical Unit API 

« Supports LU Types 0,1,2, and 3 

- Basic Interface - RUf (Request Unit Interface) 

- High Level Interface - SLI (Session-level Interface) 

- Reference on CD-ROM 

- VIEW \DOCS\INF\LUAREF 

- Language Support 

» 0 

► COBOL 

> MASM 

- Samples on CD-ROM 

- \APISUPP\LUA 










LUA Code Example 


#fndud© “tU : r LUA deflm* and $$rwt Irtcluefe 8le *[ 

extern!* pw^ ASLtprPtotype V ; 

LUAJ/BSBlRECGHD LeaVerb; 
hmV&®Pv~M.mVi!ihi 

imtmxmmtti usu**& - imywmjsui . 

Laave? « ti«ioft$fflNJCrte tCAjceMMQNj * 4; 

iuaVer^-cemm wJMELtJfs^sie «• LUAjopce^siLOPS^ 
memq^<LagVsrl5.comn^Jaa_!u5^a,LU„f4a^Mrfe^UJ^n»)^ 
LuaVerb.com monJ u ajdataJength » ste©of{tol?SettftU); 
luaV0rb.cwnmemluaucia«a4rtr »{clw PtfttS) AtaftSeffMI; 
l0aVerfecommo«?.lua^ost_barK80 = (umlgsml JongJUaerRamSeir!; 
tuaVtaspeci^©^^ 

SytluaVarbWF)? f CalttfceSUAPJ *7 

il(LttaV©ftammon.a^^ 

I . 

ItClUaVerbxemmon.luajJrliTij'el» LUAJ3K) { 

/* Art, error hae occurred */ 

} 


Other CM/2 APIs 


• System Management API (cortt) 

- Reference on CD-ROM 

- VIEW \DOCS\INF\SysyGREF 

- Language Support 

► C 

- COBOL 


- Samples on CD-ROM 
- WISUPPV3NA 


Other CM/2 APIs 


System Management API 

- Display verbs 

>■ General eonftg into 

- Current operating values lor SNA nodes 

- Subsystem Management verbs 

- Managing sessions, links, TPs DLC's 

- Configuration verbs (LU’s & TPs) 

- Management Services verbs 


Summary 

CM/2 offers SNA API's 
API’s to fit a wide variety of environments 
What are some things you would its® to see? 
Stop fey the demo booth for more information 











Avoiding Common Problems and 
Problem Determination with 
Communications Manager/2 


ernes 


Rick Schertz 
Jeff Hicks 

Research Triangle Park, NC 



Agenda; 


-/ Avoiding Problems 

- Identifying sad Resolving Problems 

- Solutions t© Common Problems 
► Future Directions 


Hardcopy Documentation 




frsclyded wttb CM/2 product package: 

-ysefsCtiMe 

- Workstatloni installation and Conftpiratlon {M8® 
: / - Configuration Foster : . 

•... •* Ouiek Snstaiafion Card 



■ mrn&iMmmmmm plications, ceil I-WMBM-7282. 

: Descriptions of alt ftardcopf ptsbicatloflis and part numbers 
(P/N) as well as online references are listed In the- 
Bibliography section of the online Overview. 


Online Documentation 


■ -mm :■ ■ 

llfp : illl jlfiii; 

CM/2 Diskette Packaging 


WMfe New 

Overview 

Command Reference 
Message Reference 
Problem Determination Guide 





AH books avaiafele In one or 
mom of the following formats: 
► PostScript 

* IFF VIEW 

* BookManager 
- AFP UST38BD 







Enhanced Publications 


■ W2 Read Me (READ* . mf. 

Kf* n s WU l n , til ■ - ips fisk spam $ & y &mmi b 


~ Bn fa ■ - II 

► Gonfig m 

-Gulc' ard 

~ Worl cat taxation and Gortfig > ih u - a 

1C j f ^ Pp£ ,• 111:;’"' 

•:.:p:p^f . l Ig .in©e;’V j ' • ='.‘ 

► Network Ad..iinIsferai 3>ri/Cds - i y ? ■-btf 

- Network Administration and Subsystem Management Guide 
.-. Scenarios 

:■ - Host Connection Reference :: 

— Host Print Gukte 

► Problem Determination Guide 


information APARs 


■ 1SQ68 04 - Startingia Commyffl cations. : ftfenagei':.Trace. . 

: : 8888315 - finding the cause of problems using CM/2 : 

f iiaTOOt -' SA Gateway Information AFAR 


APAH - Aythotod Program to ilysis Report 

- dMumm md cd~rqm 

~~wmm*rxri®m< ■ - . tom 

- All Information APARs m In y/ -rrn^t 

~ Includes 1st of correct. Ms 

- If you have access to CompuServe, check the OS/2 Developers 
Forum 2 <0$2DF2> library forihe file OM^FOJZIP which 


Reading Online Documentation 


*> OS/2 VI l Wafc s • K ; 11 ft 

- Doubt Cl ' < oi i® if ?;;i ; :^ : :- V SS^ . .^ 

- Rui III 1 li k iame Iffi ih - i si : : 

ilHPi# $ ed o i cd-roi it i ; tcmw ■ PmMMtgM 

||§§^ mager Boo* ||| §j c 

fflSIifca M k 

- View with READ/2 Library Reader program. READ/2 is Installed on 

the CD DEMEA0CH2 to view all books. 

- $T$t r , Mimtmns 

. h. :. r.:: '. ;.- 

> Postscript format {.IPS files, CD-ROM only) 
-Lo«lii\DOIMISI?S 

- Dopy the file to a postscript printer (e.g. ’copy filename Jb Iptl’) or 
: V drag the bock loon from; the drives folder to the postscript printer 

Icon Httif-i 

► AFP UST$B2 format {,120 Mbs, CD-ROM only) 

-Located in )B& $\U$T3280 

~ Use LPM2€ mk ztmiy kid m print on a personal inset printer 


Where to go for Help 


» 8uftet!n 8&an c a \ to. sited Pax Information in Whet's N&w 

* Automated Fax system, Irs the United States, call 800-425-3395 
> Bulletin Boards 
' ■ ■ ; >~ GSSCgi&GFPRyM; ■ / ■.;■:•' 

/ * In the United Slates, call 800*547*1283 for Ta1ld.ink/0828BS 

*• In Europe, the Middle East, and Africa, use BIAL-ISM to access OS2CM2 

S'£mm 8 e mm: m osaiss : 

; ■ : ~Gnfl mcm . tei s upp&rt for Cf$/2 
■if y I h ? 1107833;;. 

- 313-543-82Q0, protocoi N&1 

:■ j|;| Select ‘0’ to dowetead CMIMFO.ZIP»latestInfermatloii APARs :; ; : 

«> GaropuServe, OS/2 Sevelepe? Forum 2 <OS2l>R2): 

~ Topic 1, Communications Manager/2 

- Developer Connection, in the United States, call 80D-5DEVCON 

iiiii^BSiisSi; 

.^Developer's i • e togram, m the United States, call 808-553-1523 
| IBM Software Solutions Center 

- In the United States, call 800-882-4777 

- In Canada, call 800-485-2222 

~ Outside North America, call 800-428-1774 OBIS International Information) 

. WmmK search on CM2IMFO - - 

























Identifying and Resolving Problems 


- Activate/Deaetiwat© Network resources 

► Trace Services 

- Capture API, subsystem, fine flow traces 

- Formats raw trace data 

► Additional Utilities 



FFST/2 Components 


User View 
(Start Here} 


Internal View 


FFST/2 

OS2MLQG.DAT Message Log 
= message: log ;; ' Formatter 


Communications 

Manager# 


MESSAGE LOCFOR^ATinSR 


Probe point' 


System 

LOGQOOt -DAT Error Log 
£ error log Formatter 


Probe poirtt- 


FFST/2 

recording 


FFST/2 

Dump 

Formatter 


_ mp 

dump fifes 


Probe point 


Probe point- 


DUMP FORMAT!! 


SNA alert 


EPWALERT.DMP 


Alerts or Customized 
Dumps 


LAN Network 


Transfer ^ 

MS Data To network manager Net /tew) 










First Failure Support Technology/2 


FFST/2 - Icon View 


fl'i Message Log Formatter Message Console 

PEI System Error Log | | Start FFST/2 

| | Dump Formatter Stop FFST/2 


► Message Log Formatter 
«• System Error Log 

► Dump Formatter 

- Message Console 
» Start or Stop FFST/2 


Message Log Details 


CMR9176W: A workstation requested an activate physical unit (ACTPU) 
from the gateway, but the gateway has no explicit or Implicit LU definition 
for the workstation. 

USER RESPONSE: The error log contains a corresponding entry that 
Includes the link name, destination address, adapter number, and DLC 
name of the workstation that was requesting an ACTPU from the 
gateway. 


Double click, press Enter, or select 'Open as details.^ from Message Log Formatter 
Contains luft message text pkis a User Response and Help 
I^syge1#ip : m# : dfrect theusertothe System: Ert^rLog#^ 

» Problem ED - tinle^ie randomly gerteraied value used to.cross-reference thismessage-. 
i ■ : : ^tli;;eeeoetated 

- Probe ID - Identifies the location in the source code that triggered the message 


FFST/2 Message Log Formatter 


| Uossayo Lug 1 onnati.er C \Ob.!VjYt> rtf l\0‘JJ( HOC. D«T 


I File Selected Edit View Optl 


06 VERIFY CFG0096I: Verification for conflguratlc 
04 VERIFY CFG0076I: Verification for configuratii 
57 VERIFY CFQ)096I: Verification for configuratii 
55 VERIFY CFG007SI: Verification for configuratii 
43 VERIFY CFGO096I: Verification for configuratii 
42 VERIFY CFG0076I: Verification for configuratii 
39 SNAGATE CNR0176U: A workstation requested an ai 
38 VERIFY CFG0096I: Verification for configuratii 
37 VERIFY CFG0D76I: Verification for configuratii 
21 VERIFY CFG0077W: Verification for configuratii 
20 CONFIG APN0437E: Parsing of the node deflnltlt 
20 CONFIG APK0488E: The required paraneter ‘DESTI 
20 CONFIG APN0404E: Coanand , DEFIIC_L0GICAL_LI»:' 
19 VERIFY CFG007SI: Verification for configuratii 


i C:\CM05\DEHO\CN05GV.CFG has ended. Ho 
l C:\OttS\DEBO\Ctffl5Gtf.CFG has started. . 
1 C:\CM05\DB5O\Cttt5GtJ.CFG has ended. No 
l C:\CH05\DEKO\Cta5GV.CFG has started, 
l C:\CM05\DENO\CNa5Gtf.CFG has ended. No; 
i C:\CMOS\DEHO\CMQ5Gtf.CFG has started, 
tivate physical unit (ACTPU) froa the ga 
1 C:\CM5\DEMO\CM05Gtf.CFG has ended. No 
j C:\CM0S\DEBOSCM05Gtf.CFG has started, 
i C:\att5\DeH0\CH05Glf.CFG has ended ulth 
is file failed. 

JATI0N_ADDR£SS 1 Is not specified. This j 
on line 12 of the node definitions file! 
l C:\CH05\DEWHCN05Gtf.CFG has started. 


■ AH Communications Manager/2 Messages are collected and displayed in 
■reverse chronological order 

Double click a message for details 

■ Default system error log file is \OS2\SYSTEMVOS2MLOG.DAT ■ 

• Reference - Problem Determination Guide 


System Error Log 
































| FH e E dit Jptions_ Uelp_ 

| VERIFY [ACS] 07-28-1994 18:45:3485 

| Verification for configuration C:\CMG5\DEMO\CM05GW.CFG has ended. Ho error or 
| warning conditions were found. 

SNAGATE [ACS] 67-28-1994 18:45:42.66 

I CMR8178: A workstation requested an activate physical unit (ACTPU) from the 
i| gateway, but the gateway has no explicit or implicit LU definition for the workstation. 

1 IBMTRNET [ACS] 07-28-1994 18:46:37.50 

1 ALT2501: ALERT: A remote station attempted to Initiate a logical link, but there are no 
link stations available at the local station. 


_i_i_:__i_:_i jli 


Displays ali messages that occur on the system as the occur 
Similar to a SYSTEM console log on a S/390 host system 


FST/2 Installation 


- CM/2 wHJ not Install FFST/2 tf currently install version Is newer than the 


~Uw- 

- B&WA8E1 Some older versions of 082/2 end LAW Distance will Install a 
version of FFST/2 that Is older than WB004TO even If a more recent version Is 


- Automatically enabled by CM/2 Installation 


rm OS/2 ServKJeabity and Diagnostic Aida - a 
- • y S 

RUN~C:\OS2\$Y$TEM\LOGDA£M.EXE 

mm New. with latest FFST/Z not added for GMt 

mtc£~c u *w t 

RLW~C;\GS^£P.WQDR'3.EXE 


a ' on rc c 


1.1 which shipped WR00440 


RUN==C:\OS2\EPWROUT.£XE 1 






































-Other CM/2 Error Log files 
~\CMLfB\CM.LOG 

► Error messages that occur during installation or removal of CM/2 
§>iS * Errors logged; here only if the EFS172 interface is not available / ; 

III- * Also contains fist of CM/2 features currently installed 

: ~ \cmub\bxx.lqg. 

- Existence indicates unpacking error during installation 

- \CMLiB\CMRiN$T.L0<5 

- Errors and progress messages generated during a CSD installation 

- vCML!B\UPGRAD£.LOG ' 


- \CMLfBWERIFY.LOG 

* Contains messages and m i 

Error Log files 

* Text file containing error or informational messages concerning 
devices installed using LAM Adapter and Protocol Support {LAPS} 

- if running LA H configurations, always check this log for errors 


Up Error Messages 


Communications Manager: IBM I MIL 1 


ALT2501: ALERT: A remote station 
Qy attempted to initiate a logical link, 
but there are no link stations 
available at the local station. 


| OK; | [ Help | 


PM Prologs instead of old lull screen pop-ups 


Pop-ups can be enabled/disabled through FFST/2 interface 

sage m mole Options ng SK : 3iilll!S 

- » n EPW MS0*ON|OFF on command line 

‘ * - gepopups • - X? 

- This text file can contain up to 200 message numbers. If an error 

occurs but the corresponding message number is present in this file, 
the ‘W or sk Q will not pop-up. 

Pop-up dialogs are present in the window or -task list 
~ Only one dialog of the same message number wili be displayed at a time 


Subsystem Management 


JService Options Help 

: j-Configuration file information 
I Active CM05GW 


Service 

jSNA subsystem 
X.25 physical links 
; SNA X.25 virtual circuits 


Default SCHERTZ1 


- Displays status #ail 

,m Started, Starting, Stopping, Stopped ■ : > |? 

| Kfete/Seactlvate individual services ./l/f 

- Olspfaysactsve: and^defauh €M/2 configuration fifes i 

> Open additional details on SM& Subsystem and X.25 Services 























Subsystem Management 



Command Line Utilities 


*• Command In® functions useful for remote operators 
interested in network management or problem 
determination 

- CMGUERY - displays status of CM/2 services 

- DISPLAY - used to display SNA network resources 

- CMUN&S - activate/deactivate logical links 

- CMOIX - activate/deactivate Data Link Controls 

- CMTPS - activate/deactivate Transaction Programs 

~ CMNETB - display active NETBIOS sessions, used for 
ROPSESP 

- CMEMUL - activate/deactivate 3270 or 52S0 sessions 
- located on first Productivity Aids diskette 


Formatting Traces 


: Selecting Format trace will format the specified trace fl 
1 based on the parameters selected below. 

| Trace Input file ACS2591 
-Output file format and name 
O Summary only 
'J Detail only _ 

■SlBoth _ACS2591.SUM 


API event selection- 

® Format all APIs 
: Q Format no APIs 
:j Format selected APIs 


rs» Format all DLCs 
□ Format no DLCs 
:j Format selected DLCs 


: -Formatting options-- 

□Uppercase hex 

! : □Interleave raw trace with detail trace 


: □ APPC API - Conversation ID 


* Select ‘Formal Trace 1 from Fife pulldown menu on the Trace main panel , 

- Usea pravtoi^ly aavecl trace tile as Input 

- Formats raw trace data to show high level trace flows In a summary file or 
Interprets trace data within a detail file 

► Can now Interleave raw and formatted trace data In the same output file 

- API and Line flow filters limit amount of Information displayed In output files 





















Command Line Trace 


ICMTRACE 

- Used to START, STOP and SAVE trace data 

- Can specify trace API®, DLCs and EVENTS 

- Formats a raw trace file 

- Can specify options to create summary and detail files 
► CMTRSTOP 

- Used in conjunction with CMTRACE, will stop traces 
when a specified message is issued on the system 

■111: ~ Located on the Productivity Aids diskettes 
* APPNT.CMD 

- Batch file that starts basis LAN connectivity traces 
| APPNF.CMD 

- Us® after running APPNT.CMD, copies and formats 
traces 


Trace Events (continued) 


19 X.25_AB>I EVT_1 

20 X »2 5 _JDIiC 

21 TWINAXIAL 

22 SRPX „2 

23 X*25_JU?X XmEWia* 

24 X. 25 „APX QTHREAD 

25 LUA 

26 3270„GRAPHICSJt 

27 3270„GRAPHICS„2 

29 ETHERAND 

30 EUBSYSM System Management Verbs <iaostiy X.25) 

31 APPC„EOCAI»_JPA$B For testing APPC applications locally 

32 BLUR, : 

33 MB Support for NetWare- 


Trace Events 



01 . 

APPCjCCB 

: ' COmmahd 'doAfetbl. blbeks • Ibfcweip- 3&C/DLC 

02 

appc_iht 

Internal APPC API cells 

03 

APPtLJ»ROCBSS 

APPC Process dispatcher 

04 

appc„sm>rcv 

APPC send/rbbaive signals 

05 

APPCJKIB 

SID exchange when a link is established 

06 

ACDI 


09 

BFTDItC 


10 

IBMPC&ET 


11 : : 

SDLC 


1111 

SERVICE S„INT 


13 

SRPX„X 


14 

2BMTR3SE0? 


15 

3270„1 

3270/5250 keystrokes 

SM 

3270„2 

ELi&FI 

mM 

5250„1 

5250 function entry and control blocks 

18 

5250^2 

not used 


CMPD 


- CHS PD collects problem defermisiatfomt date amid archives It Into k 
single file . 

* Saves system and &W2 kotiilgwk&m and i environment data 

- CHS/2 cojiflgyratloo md respond flies 

- All logs In CMOS 

: - ProtocoOni aod network„mi : 

FFSB2 error logs and dump lies : 

~ Comsfig.sys 

- Output from APPQ display ^ 

, - Output from PSTAT 

- Output from QSYSTEHI 

- Output from CI8QUERY r 

- SYSLEVEL information 

- Command cars be ryrs remotely and tbe output file collected 
wltlimit local assistance 

- Syntax Is T^PD filename {C&/2 Driver! {LAPS Drived 














0pmm | | i 

- Bun \CMUB\CM2ME01C an remote machine to instali/mmove 
:y ; : ^^M0rnid : AFTPTP§ md definitions needed for remote 

access 

- A SUITE TPs include ATELNET, AFTP, APING, AftEXEC, ATELL 
AG0PY,. ANAME 

► MWSTAT.EXE 

; - Display status of connection to Novel Netware server 

► APING.EXE 

~ APPC sample program 

:: - Use to verify SNA network connection to a known partner 

- CM/2 slips OS/2 version, other versions available on 
CorapyServ 

► CMEVENT.EXE 

- Waits for a specified message to occur n times 

- Used by CMTRSTOP.CMD, but can be used by other 
: applications 



Distributed Feature clients fail to run CM/2 

- Symptoms are typically random errors, traps, 
programs fail to load, etc.. 

- Verify that your server is configured to allow a large 
number of files to fee open simultaneously 

- CM/2 typically opens 50-60 flies per client 

- For IBM LAN Server, this value is MAXOPENS and 
MAXSESSOPENS in the IBMLAN.INI 

• ACS2501 - Not enough link stations available 

aUi ■ hi.1 I ‘ iH 


• Check Logical Links display in Subsystem 
Management 


Agenda 


- Avoidino Problems 

► Identifying and Resolving Problems 
v, Solutions to Common Problems 

- Future Directions 


Common Problems (continued) 


SDLC adapter will not load 

- If MCA machine, SDLCJ5 must be ARB 1, SDLCJ must 
be ARB 7 

- ISA feus SDLC adapter requires Interrupt 3 and 4 
3270/5250 print fails 

- verify that you have the correct printer Queue name 
configured in Emulator Print Control 

- Information APAR1107677,1107678,1107680 
ROPSESP clients fail to run 


Be sure to examine the Information APARS included with 
your eonferen®© CD-ROM 













Common Problems (continued) 


Agenda 


Wmr when 

inm i. i ci 

- SAM Phone Connect discussed in What's New 
► Cannot 'Start Communications'after installing 

0 W21 ft m&r CM, 2 I,v •••'■ ^ r ;' 

•*» Delete & recreate aiii&onsthMp&mt to 

, - Me -- I - , f/s 


► Avc 

* Identifying and Resolving Problems 

► Solutions to Common Problems 

^ Flic, e Bim Mn s 


Future Directions 

► Combine all FFST/2 utilities into ©rse integrated 
program 

- All error data in one location 

| ini i, tor finer error 

|II■; ; . r : .V; 


Summary 

EKSS23 ZZZSZZZZZZSSSZSK rs KSE-SS: -, , ■ SZSZZZSZZZZZi * ■■ . ZZ.ZZ, 7Z 3 ■ ■>-- ZZ ZZ ZZ~ - !S :■■-■■■■■■■■• ■■■ - , 

► Us© the documentation and be aware that most 
of it is a miiabSeor^ilri© 

► Onli felp is ivailabie through User Forums 

► • Sw , fete : Items fe I it - sg the 

* • IS errors 

:|;ll||;:: Wiii: rf to jpg errors here 

► Examine other error logs as required 

► s - si EM/2 a ip 

f§p§§j| ||p|||f il itiihrtpiti pf) with |* | itpilp|fff.ifin? 






















1 - 919 - 254-4957 




CMOS 





Intra-enterprise diversity 

« homogeneous —heterogen* 
« host based applications —as- 

distributed, client server applications 
® decentralized decision making 


heterogeneous networking protocols 



(C) IBMCwporetoflim 















• Add applications independent of transport network 

• Simplify the network 

• Extend the reach of applications across multiple networks 

• Protect investment of existing applications and hardware 



• Multiple active protocols 
a Applications bound to protocols 
® Complex code management tasks 


® Applications independent of transport protocol 
a Multiple application services and support 
® Transport network flexibility_ 






























The Networking Blueprint 



Applications 

Multivendor 
Application Support 

Multiprotocol 

Networking 

Subnetworking 
Systems Management 



(C) IBM Corporation 1994 



Common Transport Semantics 



























































for NetBIOS over TCP 




























Open MPTN Architecture 


• Standards Bodies 

- X/Open Guide: MPTN Architecture available January 1994 

- Detailed MPTN specifications expected by year end 

- Participating in AppleTalk Networking Forum 

• Vendors 

- ki Research announcement (DECnet over SNA) 

- Oracle endorsement 

- Proginet announcement (OSI over SNA) 

- ProTools endorsement 

- PeerLogic endorsement 



(C) IBM Corporation 1994 



Multiprotocol Transport Networking 



• Applications 
independent from 
transport 

m Transport user 
partners must match 

• Connection and 
connectionless 
mode transport 
services 

® One or more 
transports below 
Common Transport 
Semantics 

9 Ability to add 
protocols above or 
below 


1 


(C) IBM Ccrportfton 1994 
















































Challenges in Building Multiprotocol 
Networks 


• Function Compensation 

• Address Mapping 

• Transport Gateways 

• Network Management 



(C) IBM Corporation 1S94 



Functional Compensations 
Required by Transport Providers 


Transport User Services 


User 

Expedited 

Multicast Data Records Stream. 



function lacking, 
needs compensation 


• Every transport provider lacks 
functions supported by other 
transport providers 

$ Compensations are common 
solution for multiple protocols' 
missing function 

® Compensations are minimal 

• Compensations required only 
when transport user requests 
services not provided by 
transport provider 



(C) IBM Corporation 18$4 































MPTN Address Mapping Examples 


Asgorithmlc 


Protocol Specific 
Directory 


MPTH 

Address 

tapper 



\ 9.|67 -2.15 
/ \ 


USIIBMNR LU350GR 





NetBIOS name 


Address Mapper 


NetBIOS name 
NETID.LU 


2 Step Process: 

• TCP network ID mapped to 
SNA network name (table 
lookup) 

• TCP host ID generates LU 
name (algorithmic) 


TCP domain name server 
extended to store user 
address and protocol 
identifier 


Transport user and transport 
provider association registered 
in address mapper 



(C) IBM Corporation 



MPTN Transport Gateway 


MPTN 

Access node 


Native 



• Interconnects two networks with different transport protocols 

• Supports native systems 


• Supports parallel gateways 




(C) IBM Corporation 













































Multiple MPTN Gateways 


MPTN 

Access 

Node 


MPTN 

Access 

Node 



® Enhanced gateway to gateway flows provided by OSI 
Inter-Domain Routing Protocols 



(C) IBM CwportSfon 1994 



^ MPTN Network Management 



<t) Each environment wifi be managed natively and separately 
by resource specific managers, e.g. SNA/MS, SNMP, CMSP 


<* Coordination management identifies problems that appear at the 
application as a result of problems in the transport layer 

<d Customer investment in existing management products protected 




(C) IBM Corporation 1994 











































































Currant MPTN Products 



AnyNet Multiprotocol Combinations 




. SNA over TCP/IP 

• Sockets over SNA 

• Sockets over NetBIOS 
. NetBEUI over SNA 

Platforms: 

• MVS/ESA 
. OS/2 

. OS/408 
. AIX/6000 

• Windows (Beta) 






























































SNA over TCP/IP 


CICS/ESA DB2 IMS/ESA CICS OS/2 DCAF 


AnyNet/MVS 
AnyNet/2 
OS/400 
AIX/6000 
(Beta) Windows 



AnyNet/MVS 
AnyNet/2 
OS/400 
AIX/6000 
Windows (Beta) 


o APPC over TCP/IP 
o Emulators and printers over TCP/IP 
o Provides full VTAM session initiation flexibility 



(C) IBM Corporator! 1994 



Sockets over SNA 


FTP HOST NFS PING TALK TELNET X Window System SNMP 


AnyNet/MVS 
AnyNet/2 
OS/400 
(Beta) AIX/6000 



AnyNet/MVS 

AnyNet/2 

OS/400 

AIX/6000 (Beta) 


• TCP/IP sockets applications such as file server 
available over SNA backbone 

• Available over VTAM V4R2 APPN 





(C) IBM Cwporatton 1994 



































Any Net/2 Sockets over NetBIOS 



• New function: Sockets (DCE services) over 
NetBIOS LAN 

• Incorporated in IBM DCE for OS/2 

(C) IBM Corporation 1994 jfct $WSM' 


NetBEUI over SNA 



• Extends OS/2 NetBIOS applications such as Lotus Notes 
and IBM LAN Server over SNA 


k 


k 


(C) IB^ Corporation 1994 





























AnyNet Gateways 



Multiple AnyNet/2 Gateways 


Native TCP/IP 

Native TCP/IP System 



Connects isolated TCP/IP networks across SNA network 









































Multiple AnyNet/MVS Gateways 


Native SNA 


Native SNA 


System 



• Connects SNA networks across TCP/IP network 



(C) IBM Corporation 1894 



AnyNet Performance 


Transport Protocol Throughput on OS/2 


bits per Second (In Minions) 



• Performance with AnyNet 
mirrors that of the 
transport protocol. 

. For files larger than 8K, 
AnyNet/2 Sockets over 
SNA was faster than native 
TCP/IP. 

• For flies 8K and under, 
throughput was similar for 
SNA, TCP/IP, AnyNet/2 
Sockets over SNA and 
AnyNet/2 APPC over 
TCP/IP. 


. Results on MVS were 
similar. 



(C) IBM Corporator 1894 
































AnyNet Summary 


Access Node 

• AnyNet Feature of VTAM V3R4.2 and V4R2 • AnyNet/2 V2.0 

-SNA over TCP/IP - SNA over TCP/IP 

- Sockets over SNA - Sockets over SNA 

- OS/2 downloadable ® AnyNet/2 NetBEUI over SNA 

• AnyNet/6000 Features of . AnyNet/400 in AS/400 V3R1.0 

AIX SNA Server/6000 _ APPC over TCP/IP 

- APPC over TCP/IP _ Sockets over SNA 

- Sockets over SNA (Beta) 

m AnyNet for Windows 

- APPC over TCP/IP (Beta) 

Single or Multiple Gateways 

® AnyNet/MVS SNA over TCP/iP Gateway (in VTAM AnyNet Feature) 

® AnyNet/2 SNA over TCP/IP Gateway (BETA) 

® AnyNet/2 Sockets over SNA Gateway VI.1 



(C) IBM Corporation 1894 



Technical Assistance 



Dept AB7/ Bldg 502 
P.O. Box 12195 

Research Triangle Park, NC 27709 

VM: MPTN at RALVMS 

Internet: mptn@vnet.ibm.com 

CompuServe: !GO MPTN 

OS2BBS and 

TalkUnk: ANYNET CFORUM 

Fax (questions): 919-254-4029 


(Q IBM Corporation 1&©4 










Manager/2 APPIgfrace 
Capability 



APPC Market Enablement 
IBM Networking Systems 
Research Triangle Park, NC 
appcmrkt@vnet.ibm.com 
APPCMRKT at RALVM6 
919-254-4957 


Agenda 


- Starting and Stopping CM/2 APPC Traces 

- Go through the panels 

- Command line interface 

> Formating Traces 

« How to read CM/2 APPC Traces 

-»Where to start 

- What to look for 

- How to determine where the problem 


(0 IBM Corpefstkm 1i84 








r Application Testing Tips 


■ Traces can be your best friend 

■ CM/2 APPC Traces show you 

- What APPC/CPI-C call was made 

- The parameters supplied to the call 

- Return code(s) and status indicators returned from the call 

- Any network flows which occured 

- Any data received or sent 




(C) IE&3 Corporation 1884 




Communications Manager/2 Folder 
Problem Determination Aids - Trace 




Manaqe 327Q/ 525 0 Sessions tteyiock Subsystem Management 


imjm 

Proble m Oe tenwnofion Aids -Toace Problem Detenninofson Aids - Dump Command Reference 

" iff 


Message Reference Overview Communications Manager Setup R»ad Me 




rill 


Sfesjt Communications Stop Co<nmunio:^ons Abnormally Replace Default Configuration 
CAPS Stop Communications Normally 
















Trace Services Window 




To start or stop traces, select a product and one or more trace selections. 
Then press Start or Stop. 


Pfoduct |Commun icatio ns Manage r . 

-Trace selections- 

APIs X>LCs 

ACDI .. H [dFTDLC 

APPC I iETHERAND 

EHLLAPi I jSBMPCNET 

LUA_RUI Iff IIB MTRN ET 

LUA_SIJ I lIDLC 

MANAGEMENT || |SDLC 



Trace status INACTIVE 


Events 

3270*...'.| 

3270_2 fl 

3270_GRAPHICS_1| 

3270_GRAPHICS_2>| 

S2S0__1 

5250^2 1 


Viewing inactive traces 


Tra^e filename 



To start or stop traces, select a product and one or more trace selections. 
Then press Start or Stop. 


Product j Communica tions Man ager 


Trace status INACTIVE 


Trace selections 

APIs 

ACDI 

APPC 

EHLLAPi 

LUA_RUi 

LUA SLI 


' (MANAGEMENT 


£LCs 

DFTDLC 

ETHERAND 

IBMPCNET 

IBMTRNET 

SDLC 

SDLC 


Events 

APPCICCB 

APPC_INT 

APPC_LOCAL_PAT 

APPC_PROCESS 

APPC__SNDRCV 

APPC XID 


Viewing inactive traces 


Trsi£.e filename j 

































































v Starting the APPC Trace 



To start or stop traces, select a product and one or more trace selections 
Then press Start or Stop, 


Product [Com munica tions Manager 


Trace status ACTIVE 


Trace selections 

APIs 

ACDI 

EHLLAPI 

LUA__RUI 

LUA_SL1 

MANAGEMENT 

SERVICES 


£LCs 

DFTDLC 

ETHERAND 

IBMPCNET 

IDLC 

SDLC 

>SPA_ROUTER 


Viewing Inactive traces 


I Tra£e filename 


Events 

3270”l 1 

3270_2 

3270_GRAPHICS_1! 
327Q_GRAPHICS_2| 
S250_1 
5250 2 


r 

[CAtracejaping TOCICS3 

> 

APING version 2.4 APPG echo test with timings 

Allocate duration: 

2828 ms 

Program startup and Confirm duration: 318 ms 

Duration Data Sent 

Data Rate Data Rate 

(msec) (bytes) 

(KB/s) (Mb/s) 

160 200 

1.2 0.0010 

J 


(C) IBM Corporation 1894 

































" w Stopping the APPC Trace 


To start or stop traces, select a product and one or more trace selections. 
Then press Start or Stop. 


Product jComm unications Manage r 


Trace selections 
APIs 

Iacdi 

EHLLAPI 

LUA_RUI 

LUA_SU 

MANAGEMENT 

SERVICES 


&LCs 

1 DFTDLC 

ETHERAND 

IBMPCNET 

IDLC 

SDLC 

iSPA__RqUTER 
Viewing inactive traces 


Trace filename 


Trace status ACTIVE 


Events j 

327(0 ' B | 

3270_2 1 i 

3270_GRAPHICS_1< I 
3270_GRAPHICS_2! I 
5250_1 ; I | 

5250 2 M | 



'mT» 


Specify the file name to use for saving problem determination 
data. 

filename | *.TRcj ______J 

Path ©TRACE l£rive jc:.Iff 

Directories Files 


(0 IBM Corporation 18$4 





































Formating the Trace File 





(C) IBM Corporation 1894 




^ Selecting Typei(s) of Trace Files to Produce 


Selecting Format trace win format the specified trace file 
toased on the parameters selected below. 

Trace input file | c;vfRACE \WAYNE.fRC . 

j Output fife format and name.~.~~.——1~ 

j Mammary ©nfy ® g 


$§Retail only 
Mioth] 


ic:\TRACE\W AV NE.SUM 
IC:\TRACE\WAYNE.DET 


m 

m 

m 

m 


API event selection 
Si Format a§8 AP8s 
toil Format no APIs 
HfitFormat selected APIs 

A PUS 


Line flow event selection 
DFormat a8§ DLCs 
Fojmat no DLCs 
Siffi Format selected DLCs 


ACDf || 

ETHERAND □! 

APPC 

IBM PCM ET ■ 

CPiC ■ 

IBMTRNET H 

EHLLAPI [!i 

8 DLC p 

LUA RUI H 

MPTNBTCP ■ 





















































Other Format Options 



m 


OS/2 Tracing With Command Line Interface 


m Using APPNT 

... Starts tracing function in Communications 
Manager 

- Execute APPNT command 


Performs same functions as CM panels, but 
command line often easier to use 


« Using APPNF 

- Use after APPNT 

... Execute "APPNF xxxxxxxx" where xxxxxxxx is 
file name you want to use for trace output 

- Stops trace and creates three files 
xxxxxxxx.TRC, .DET, .SUM 























w 

* APPNT.CMD File 


(©ECHO OFF 

REM ** START TRACES after resetting the trace buffer 

REM ** TRACE APPC and services verbs, Token ring Data and 

REM ** APPC events 1 2 3 4 5 and 12 

REM ** event 1 = internal DLC interface 

REM ** event 2 = APPC verbs 

REM ** event 3 = internal APPC flows 

REM ** event 4 = APPC send and receive 

REM ** event 5 = XID flows 

REM ** event 12 = Utility verbs such as error log entries 
REM ** storage 3 uses up to three 64K segments for traces 
REM ** For other options in tracing enter "CMTRACE ?" 

ECHO ON 

CMTRACE START -reset -api appc services -data ibmtrnet -event 1 2 3 4 5 
12 -storage 3 



Start with the .SUM File 


* The .SUM file is the trace summary file 

* Shows 

- Verbs or calls issued 

- Network flows 

- Return codes 

* Will show you quickly if you ever got out of the box 

* Has three columns 

- Conversation ID, DLC, line number 

- API 

- FLOW 




w APPNF.CMD File 


@ECHO OFF 

REM ** STOP TRACES (trace data remains in storage) 

REM ** COPY TRACE from storage to disk file in the current directory 
REM ** File name is specified as a parameter and the extension is 
REM ** .TRC for the full trace, 

REM ** .DET for the detailed trace and 
REM ** .SUM for the trace summary. 

REM ** For other options in trace formating enter FMTTRACE ? 

REM ** If you want tracing to continue with the same type, then remove 
REM ** the CMTRACE STOP line. 

ECHO ON 
CMTRACE STOP 
CMTRACE copy %1 .trc 
FMTTRACE %1 .trc +d +s 



.SUM File 


FMTTRACE 

(C) Copyright IBM Corporation 1990, 1991, 1993 

-Line- -Tpld-- -Convld- .API- 

-Line- -DLC— #-DA-LFSID .Flow- 


5 00000000 00000000 .GetType.—.> 

9 00000000 00000000 <-GetType(0xO001,0x00000001)- 

i -i .. (TOCICS3 )-> 

15 <~ (CM_PROGRAM PARAMETER,CHECK)— 

17 .CMINIT(APINGD ).--> 

19 <~CMINIT(CM_PROGRAM_PARAMETER_CHECK)-~ 

21 ..CM!NIT( )-> 

23 -TPStrted(Df lt,CP IC_DEF).> 

103 1c68779b <-TPStrted. 

Ill 8c00af85 ^.CMIN!T(CM_OK).. 

123 8c00af85 .CMECT..> 

125 8c00af85 <-CMECT(CM_MAPPED_CONVERSATION.CM_OK)- 

127 8c00af85 .CMEMN-> 



































^ Move on to the ,DET File 


« The .DET file contains expanded details from the 
.SUM file 

® Easy to correlate .DET to .SUM by line number 
m Shows 

_QgU Qf Ygfb details 

- Options used 

- Return codes 

- SNA sense codes 



As a Last Resort go to .IRC Fite 

■ Not used very often 

■ Have your SNA formats manual handy 

« Find your friendly VTAM systems programmer 



DET File 




FMTTRACE 

(C) Copyright IBM Corporation 1990,1991, 1993 

Uno: 9 API return 

Time stamp: 14:37:02.63 
GetType 

|| Primary return code * PARAMETER_CHECK 
|| Secondary return code * BAD_TPJD 
|| TP ID =■ 0x0000000000000000 
|| Conversation ID * 0x00000000 
|| Conversation type - Basic 

Lin*: 13 CPI-C request 
Timestamp: 14:37:02.63 
CM I NIT 

|| Symbolic destination name * TOCICS3 

Line: 15 CPI-C return 
Time stamp. 14:37:02.84 
CMINIT 

|| Return code * CM_PROGRAM_PARAMETER_CHECK 

Une: 17 CPI-C request 
Timestamp: 14:37:02.84 
CMINIT 

|| Symbolic destination name * APINGD 


OS/2 Trace Example 


■ Sequence of events 


- APPNT 


- APING TOCICS3 

- APPNF aping 

* aping.sum 

* aping.det 
► aping.trc 







APING TRACE EXAMPLE 
Every things OK 






158 8c00af85 CMECT-> 

160 8c00af85 <-CMECT(CM_MAPPED_CONVERSATION,CM_OK)— 

162 8c00af85 -CMEMN-> 

164 8c00af85 <-CMEMN(#INTER,CM_OK)- 

167 8c00af85 --CMEPLN-> 

170 8c00af85 <-CMEPLN(TOCICS3,CM_OK)- 

173 8c00af85 CMESL-> 

175 8c00af85 <-CMESL(CM_NONE,CM_OK)- 

177 8c00af85 --CMSSL(CM_CONFIRM)-> 

179 8c00af85 <-CMSSL(CM_OK)- 

181 8c00af85 —-CMSPTR(CM_PREP_TO_RECEIVE_FLUSH)~> 

183 8c00af85 <-CMSPTR(CM_OK)- 

185 8c00af85 CMECT-> 

187 8c00af85 <-CMECT(CM_MAPPED_CONVERSATION.CM_OK)— 

189 8c00af85 CMEMN-> 

191 8c00af85 <-CMEMN(#INTER,CM_OK)- 

194 8c00af85 -CMEPLN-> 

197 8c00af85 <-CMEPLN(TOCICS3,CM_OK)- 

200 8c00af85 -CMESL-> 

202 8c00af85 <.CMESL(CM_CONFIRM,CM_OK). 


FMTTRACE 

(C) Copyrlghl IBM Corporation 1990,1991,1993 


-Lino- -TpkJ- -ConvId- -API- 

-Une- --DLC— » -DA LFSID Flow- 

5 00000000 00000000 -GetTypo-> 

9 00000000 00000000 <--GetTypo<0x0001, 0 x 00000001 Y - 

13 -CMINIT(TOCICS3)-> 

15 <-CMINIT(CM_PROGRAM_PARAMETER_CHECK)~ 

17 -CMINIT(APINGD )-> 

19 <~CMINIT(CM_PROGRAM_PARAMETER_CHECK)~ 

21 -CMINIT( )-> 

23 -TPStrted{D1l1,CPIC_DEF)-> 

103 1 c68779b <-TPStrted- 

111 8c00a185 <-CMINIT(CM_OK)- 

123 8c00af85 -CMECT-> 

125 8c00af85 <-CMECT(CM_MAPPED_C0NVERSAT10N,CM_0K)- 

127 8cOOaf85 CMEMN-> 

129 8c00a185 <-CMEMN(,CM_OK)- 

131 8c00a185 CMEPLN-> 

134 8c00af85 <-CMEPLN( ,CM_OK)- 

136 8c00a185 -CMESL-> 

138 8c00a185 <-CMESL(CM_NONE,CM_OK)- 

140 8c00af85 -CMSPLN(TOCICS3)-> 

143 8c00a185 <-CMSPLN(CM_OK)- 

146 8c00af85 CMSTPN-> 

149 8c00a185 <-CMSTPN(CM_OK)- 

152 8c00a185 -CMSMN(#INTER)-> 

155 8c00af85 <-—.CMSMN(CM_OK)- 


204 8c00a185 -CMALLC-> 

216 1 c68779b -McAiloc-xHTOC IG83 P INTER. APINRLT. • 


589 IBMTRNET 00 40002060063104 10202 ' .BIND rq.> 

643 IBMTRNET 00 40002060063104 10202 <.BIND +rsp-. 

844 IBMTRNET 00 40002060063104 10202 .FMtS.CNOS. 

884 IBMTRNET 00 40002060063104 10202 <.Solicited PM(8). 

931 IBMTRNET 00 40002060063104 10202 <.CNOS. 

1112 IBMTRNET 00 40002060063104 10202 .SoBdled IPM(1).a 

1429 IBMTRNET 00 40002060063104 10302 .BIND rq.> 

1489 IBMTRNET 00 40002060063104 00204 <.BIND rt|. 

1723 IBMTRNET 00 40002060063104 00204 .BIND +rsp-.> 

1791 IBMTRNET 00 40002060063104 00204 <.LUSTAT rq-. 

1868 IBMTRNET 00 40002060063104 00204 .Soliciled PM(1).a 

1912 IBMTRNET 00 40002060063104 10302 <.BIND +rsp-. 


2087 1 c68779b 9e11719b <.McAltowil*-.. 

2101 8c00a185 <-CMALLC<CM_OK)- 

2103 8c00a185 --CMSPTR(CM_PREP_TO _RECEIVE_FLUSH)-> 

2105 8c00a185 <.CMSPTR(CM_OK). 

2107 8c00a185 .-CMSST(CMJ3UFFER JDATA). 

2109 8c00a185 <.CMSST(CM_OK). 

2111 8c00a185 .-.CMSEND(3).> 

2127 1c68779b9e11719b ..-McSendDaia(3,None).> 

2131 1c68779b9e11719b <--McSencDala(0x0001,0x00000006). 

2135 1c68779b 9011719b .McSendDala(Ox0001,0x00000006) > 

2146 1c68779b9e11719b <.McSendDaia. 

2150 8c00a185 <.CMSEND(CM_OK). 

2153 8c00a185 .-.CMRCV(128).> 

2166 1c68779b 9611719b .-.McRcvWai1(128).> 

2171 1c68779b 9011719b <.McRcvVfejl (0x0001,0x00000006). 

2176 1c68779b 9011719b .MsRcvWai1(Ox0001,0x00000006).> 

2217 IBMTRNET 00 40002060063104 10302 


-FMH5,ApplDala- 






















































































: * r Allocate Comand from .DEI file 


Line: 216 API request 
Time stamp: 14:37:03.56 
McAllocate 

|| Wait object = 0x00000000 

|| TP ID = 0x1c68779b70ef5f35 

|| Sync level = Confirm 

jj Return control = When session allocated 


11 

ii 


Conversation style = i wo-Way Alternate 

/-y__+:___ i n» _ r\^,r\r\r\r\c\r\r\r\ 

vX)s ;v€iDauu>! y i p — 'jauv/uv/uvuv 

Dn I I ! ■=— TAPIPOO 

I 0.1 U I O' I 0.1100 — I UUIUUU 


|| Mode name = #INTER 
|| TP name = APINGD 
j| Security = Same 


Line: 589 Send MU 

Timestamp: 14:37:04.91 

DLC type: IBMTRNET 

Adapter number: 00 

Destination address: 40002060063104 

ALS ID: 0810779B0FEF5F35 

||TH: FID2, Exp, OIS, LFSID«0x 10202, SNF«0x0009 

||RH: RQ, SC, FI, OfC, RQD1 

BIND rq 

|| Type « Negotiable 
|| FM profile « 19 
|| TS profile-7 
jj FM usage - primary: 

|| Chaining use - MuIttpie-RU chains allowed 

I! Request control mode * Immediate request mode 

II Chain response protocol * Definite or exception response 

|| Two-phase commit * Not supported 

j| Compression m Will not be used 

|| Send end bracket * Will not send 

jj FM usage - secondary: 

|| Chaining use * Multiple-RU chains allowed 
|| Request control mode * Immediate request mode 
jj Chain response protocol * Definite or exception response 
jj Two-phase commit * Not supported 
|| Compression * Will not be used 
jj Send end bracket « Will not send 


h 




{CJBMCarjwraJsi IBM 




|| FM Usage - common: 

|| Whole BIUs required = No 
|| FM header usage = Allowed 

|| Bracket usage and reset state = Brackets are used and reset state is INB 

|| Alternate code set allowed = No 

|| BIND queueing allowed = No 

|| Normal-flow send/receive mode = Full-duplex 

|| Recovery responsibility = Symmetric 

|| Contention winner = Primary 

|| Alternate code set = ASCII-7 

jj Control vectors included = Yes 

|| Half-duplex flip-flop primary reset state = Send 

|| TS usage: 

|j Secondary to primary pacing stages = One 
jj Secondary send window size = 1 
|| Adaptive pacing = Supported 

|| Secondary receive window size = 0 
|| Secondary maximum @end RU size = 512 
|| Primary maximum ©end RU size = 512 
|| Primary to secondary pacing stage© = One 
|| Primary send window size = 0 
jj Primary receive window size = 1 


II PS profile: 

|| LU type 2 6 

|| Lb-6 level a 2 

|| Conversation-level security = Accepted 

|| Already-verified indicator = Accepled 

|| Synchronization level supported = Confirm 

|| Session reinitiation responsibility = Operaior controlled 

|| Parallel sessions supported = Yes 

j| CNOS supported = Yes 

|| Limited resource = No 

|| Length-checked compression options = No Compression 
II Cryptography options: 

|| Private cryptography support = No 

|| Session-level cryplography support = No 

|| Primary LU name * USIBMNR.NR50EF1I 

jj SVuclured user data: 

j| Mode name * SNASVCMG 

|| Session instance Identiner = 0x01 s?513574«f5f35 

|| Network-qualified PLU name = USIBMNR.NR50EF11 

|| Secondary LU name = USIBWTO.TOCfCS3 

|| Fully qualified PCID confroi vector: 

|| PCiD = 0xdb710aa34313040a 

|| Network qualified CP name = USIBMNR.NR50EF11 

|| COS/TPF control vector: 

|| Transmission priority = Network 

|| COS name = SNASVCMG 










w 


APING TRACE EXAMPLE 
Error Encountered 



Looking at the Trace „DET file 


Line: 505 API return 

Timestamp: 17:03:46.28 
McAllocate 

|| Primary return code = ALLOCATION_ERROR 

|| Secondary return code = ALLOCATION_FAILURE_NO_RETRY 

|| TP ID = 0x1 c68779bb3ef5f35 

j| Conversation ID = 0x00000000 

|j Sync level = Confirm 

|j Return control = When session allocated 

j| Conversation style = Two-Way Alternate 

jj Conversation group ID = 0x00000000 

j j Sens© data = OxfffeO110 

II Partner LU alias = TOCICS3 

j| Mod® nam© = #JUNK 

|| TP name = APINGD 

jj Security = Same 



Looking at the Trace .SUM file 


212 8c00af84 -CMALLC—.—> 

224 1c68779b —McAlocale(TCX;iCS3 1 #JUNK l APINGD)—> 


309 IBMTRNET 00 40002060063104 10202 .FMH5 CNOS- 

347 IBMTRNET 00 40002060063104 10202 <.Soiidled IPM(64)- 

394 IBMTRNET 00 40002060063104 10202 <.CNOS. 

497 IBMTRNET 00 40002060063104 10202 .Soiidled IPM<1)- 


505 1c68779b 00000000 <—McA]|ocate(0x00O3,0x00000004)- 

519 8c00af84 <-CMALLC<CM_ALLOCATE_FAlLURE_NO_RETRY)- 



Tracsng with CM/2 

■ Use the own LU feature of OS/2 with ES or CM/2 to 
test on single machine 

■ Keep a trace of the working program around for later 
reference 

■ Get Aping package 

■ Get Getsense package 



Put APPNT and APPNF commands on all 
workstations 



















West Coast Distributed Object Consultants, 
IBM Personal Software Products 


Copyright VNR, 1994. Reprinted with permission 
from Client/Server Survival Guide with OS/2 



CSOl 

















Robert Orfali 
Pen Harkey 


Client/Server Survival Guide 


Robert Orfali 
Pan Harkey 


CSSent/Server Survival Guide 



•nfli 




That m$ definitely 
the easy 
part of our trSpf 


CORBA 


/^Nothing fir^ 
seem* te be in this 
Theg/Earthling . 
^\Jietie«arylJ/r 


Copyright VNR, 1994. Reprinted with permission 
from Client/Sewef Survival Guide with OS/2 


Copyright VNR, 1994. Reprinted with permission 
from Client/Server Survival Guide with OS/2 


Client/Server Survival Guide 


Copyright VNR, 1994. Reprinted with permission 
from Client/Server Survival Guide with OS/2 


Copyright VNR, 1994. Reprinted with permission 
from Client/Server Survival Guide with OS/2 













Refeerf Mali Robert Orfali 

Pan Hertay _Client/Server Suftfitfal Guide Pan Harfcey _ Client/Server Survival Guide 


/ Post-Scarcity? 



Copyright VNR, 1994. Reprinted with permission 
from Client/Server Survival Guide with OS/2 



Copyright VNR, 1994. Reprinted with permission 
from Client/Server Survival Guide with OS/2 


Robert Orfali 


Robert Orfali 



!lf|jtes&; ' - 

._ 4 


■ 


Client/Server Survival Guide 


Client/Server Survival Guide 


Copyright VNR, 1994. Reprinted with permission 
from Client/Server Survival Guide with OS/2 


Copyright VNR, 1994. Reprinted with permission 
from Client/Server Survival Guide with OS/2 






Robert Orfali 
Pan Hai 


Client/Server Survival Guide 


Robert Orfali 
Pan Harkey 


Client/Server Survival Guide 



Copyright VNR, 1994. Reprinted with permission 
from Client/Server Survival Guide with OS/2 


Copyright VNR, 1994. Reprinted with permission 
from Client/Server Survival Guide with OS/2 





















Client/Server Survival Guide 


Robert Orfafi 
Pan Harkey 


Cl lent/Server Survival Guide 



. 


Client 


Copyright VNR, 1994. Reprinted with permission 
from Cllent/Server Survival Guide with OS/2 


Client/Server Survival Guide 


Superclletrt 


Mlzed Parallel C 


Copyright VNR, 1994. Reprinted with permission 
from Cllent/Server Survival Guide with OS/2 


Copyright VNR, 1994. Reprinted with permission 
from Cllent/Server Survival Guide with OS/2 


























Pan Harkey Client/Server Suftfitfal Guide 






> 

Copyright VNR, 1994. Reprinted with permission 



& 

a... 

from Client/Server Survival Guide with OS/2 

Rob< 


fali 



Harkt 

ay 

Client/Server Survival Guide 



Copyright VNR, 1994. Reprinted with permission 
from Client/Server Survival Guide with OS/2 


Copyright VNR, 1994. Reprinted with permission 
from Client/Server Survival Guide with OS/2 











Copyright VNR, 1994. Reprinted with permission 
from Client/Server Survival Guide with OS/2 


R©lb@rf ©rfali 
Pars Harkey 


Client/Server Survival Guide 


Copyright VNR, 1994. Reprinted with permission 
from Client/Server Survival Guide with OS/2 


Robert Orfali 
Pan Harkey 


Client/Server Survival Guide 


051 Reference Mode I 


Peer-to-Peer 
5ervlces API 


CPI-C ' services Ar 

APPC .Common 
^ '“Transport 
Semantics 


Copyright VNR, 1994. Reprinted with permission 
from Client/Server Survival Guide with OS/2 


Stacks, Stacks, and more 
Stacks! Don't you Earthlings 
m ever get any real work done? 


Copyright VNR, 1994. Reprinted with permission 
from Client/Server Survival Guide with OS/2 


Robert Orfaii 

















Robert Orfali 
Pan Harkey 


Client/Server Survival Guide 


Robert Orfali 
Pan Harkey 


Client/Sertfer Survival Guide 




Copyright VNR, 1994. Reprinted with permission 
from Client/Sefv/er Survival Guide with OS/2 



Copyright VNR, 1994. Reprinted with permission 
from Cllent/Server Survival Guide with OS/2 




I always wanted 
to have my own bank. 
Heh....heh....heh.„. 


Network 


Make your 
deposits here! 


Robert Orfali 

Dan Harkey _Client/Server Survival Guide 


Robert Orfali 
Pan Harkey 


Client/Server Survival Guide 


Distributed File Service 


File Servers 


Copyright VNR, 1994. Reprinted with permission 
from Client/Server Survival Guide with OS/2 


Copyright VNR, 1994. Reprinted with permission 
from Client/Server Survival Guide with OS/2 









Ribert Orfai! 
Pan Harfcey 


Robert Orfali 
Pan Harkey 


Client/Server Survival Guide 



/ Objects? 



Copyright VNR, 1994. Reprinted with permission 
from Cllent/Server Survival Guide with OS/2 


Copyright VNR, 1994. Reprinted with permission 
from Client/Server Survival Guide with OS/2 















Database 
Administrator 


Stored SQL Stored 
Commands Procedures 
Tables 



Stored SQL 
Command s 



Copyright VNR, 1994. Reprinted with permission 
from Client/Server Survival Guide with OS/2 


Vendor A Vendor 3 Vendor C 
Client Client Client 


SQL API 

SQL API 

SQL API 

Driver 

Driver 

Driver 


$tdckb 





Vendor A 
Patabaee 
Administrator 

Vendor 3 

Patabaee \A-n%Tr r 
Admlnietrator 

Administrator 


Si 

ff 


, 

1 

Stadkp 



Vendor C 






Copyright VNR, 1994. Reprinted with permission 
from Client/Server Survival Guide with OS/2 





















Robert Orfali 

Pan Harkey _Client/Server Survival Guide 



Information Hound 



Copyright VNR, 1994. Reprinted with permission 
from Client/Seri/er Survival Guide with OS/2 


Robert Orfali 

Pan Harkey Client/Server Survival Guide 




Copyright VNR, 1994. Reprinted with permission 
from Client/Server Survival Guide with OS/2 




Robert 
Part Ha 


Copyright VNR, 1994. Reprinted with permission 
from Client/Server Survival Guide with OS/2 


Client/Server Survival Guide 


Copyright VNR, 1994. Reprinted With permission 
from Client/Server Survival Guide with OS/2 


Robert Orfali 
Pan Harkey 


'Sewer Survival G 













ipil 

L ^ 


1000 Connections 


ransactfon 


500 Mbytes of RAM 

+ 

10,000 Open Files 


50 Shared Connections 


25 MSytes of RAM 
+ 

500 Open Files 


Robert Orfali Robert Orfali 

Pan Harkey Client/Server Survival Guide Pan Harkey _ Client/Server Survival Guide 



Copyright VNR, 1994. Reprinted with permission 
from CUent/Server Survival Guide with OS/2 



Copyright VNR, 1994. Reprinted with permission 
from Client/Server Survival Guide with OS/2 


Robert Orfali 
Pan Harkey 


Client/Server Survival Guide 


Robert Orfali 
Pan Harkey 


Client/Server Survival Guide 



Copyright VNR, 1994. Reprinted with permission 
from Client/Server Survival Guide with OS/2 


Copyright VNR, 1994. Reprinted with permission 
from Client/Server Survival Guide with OS/2 











Meet Offali 


Robert Orfali 


Pan Harkey _Client/Server Survival Guide Pan Harkey Client/Server Survival Guide 







7\pp[lcatloir 


'Application} 


Standards 

Committee 


Copyright VNR, 1994. Reprinted with permission 
from Client/Server Survival Guide with OS/2 


Client/Server Survival Guide 


Copyright VNR, 1994. Reprinted with permission 
from Client/Server Survival Guide with OS/2 


Copyright VNR, 1994. Reprinted with permission 
from Client/Server Survival Guide with OS/2 


Copyright VNR, 1994. Reprinted with permission 
from Client/Server Survival Guide with OS/2 


Client/Server Survival Guide 


Robert Orfali 
Pan Harkey 










Robert Orfali Robert Orfali 

Pan Starkey _Client/Server Survival ©yide Pan Harfoy _ CSSenf/Server Survival Guide 




Copyright VNR, 1994. Reprinted with permission 
from Client/Server Survival Guide with OS/2 



Copyright VNR, 1994. Reprinted with permission 
from Client/Server Survival Guide with OS/2 


Reberf Orfali 

Pan Harkey _Client/Server Survival Guide 


Robert Orfali 

Pan Harkey _Client/Server Survival §ajide 



Mall Front End 
Document Views 
VIM AH 


05/2 
Windows 
Unix 
NLM 

^ T X' 



Workflow 







Copyright VNR, 1994. Reprinted with permission 
from Client/Server Survival Guide with OS/2 


Copyright VNR, 1994. Reprinted with permission 
from Client/Server Survival Guide with OS/2 











Robert ©rfali 
Pan Harkey 


CSienf/Server Survival Guide 


Robert ©rfali 
Pan Harkey 


Client/Server Survival Guide 


A) Plug-and-Play 




Copyright VNR, 1994. Reprinted with permission 

from Client/Server Survival Guide with OS/2 



P) Coexistence 




Copyright VNR, 1994. Reprinted with permission 
from Client/Server Survival Guide with OS/2 


Robert Orfali 

Pan Harkey Client/Server Survival Guide 


Robert ©rfali 

Pan Harkey _Client/Server Survival Guide 


Application 



Common 

Objects 



Facilities 

C 



Q O 



Future: 

* Transactions 

* Security 

* Concurrency 

* Relationships 

* Pata Interchange 




Copyright VNR, 1994. Reprinted with permission 
from Client/Server Survival Guide with OS/2 



Copyright VNR, 1994. Reprinted with permission 
from Client/Server Survival Guide with OS/2 








Robert Orfali 
Ian Harkey 


Client/Server Survival Guide 


Client/Server Survival Guide 


A) rush Style 


Aha: the Aha: the 

house is house is 

on fire on fire 


Application . 
specific 


Process! Process) Process 

Q Q. Q 


Application 


Object Request Broker 


B) Pull Style 


interface Interface 
A Stub : B Stub 


sic Object Adapter 
(BOA) r 



Robert Orfali 
Pan Harkey 


Copyright VNR, 1994. Reprinted with permission 
from Client/Server Survival Guide with OS/2 


Client/Server Survival Guide 



Copyright VNR, 1994. Reprinted with permission 
from Client/Server Survival Guide with OS/2 


Client/Server Survival Guide 


Lifecycle Object 



Factory Finder 



find_factories 


(Oient Application) 



Protocol l 



PIP PIP PIP 


Persistent 
Objects (POs) 


Persistent 

Object 

Manager (POM) 


Generic Factory 


create_object 



PA O.PMO-93 PPO 
[ 


Persistent 

Pata 

Services (PPSs) 


Copyright VNR, 1994. Reprinted with permission 
from Client/Server Survival Guide with OS/2 


Copyright VNR, 1994. Reprinted with permission 
from Client/Server Survival Guide with OS/2 





Structured 

Storage 


Automaton 
& Scripting 


Copyright VNR, 1994. Reprinted with permission 
from Client/Server Survival Guide with OS/2 


Robert Orfali 
Pan Harkey 


Client/Server Survival Guide 


/ CORBA? 


in? 


Copyright VNR, 1994. Reprinted with permission 
from Client/Server Survival Guide with OS/2 


m a 


inn 


Survival Guide 


Copyright VNR, 1994. Reprinted with permission 
from Client/Server Survival Guide with OS/2 


Client/Server Survival Guide 


Copyright VNR, 1994. Reprinted with permission 
from Client/Server Survival Guide with OS/2 


Client/Server Survival Guide 














Robert Orfali 
Dan Harkev 


Client/Server Survival Guide 



I ' ' ' V~j 

I i—-“Q sss 

~~ ' “ MM 



UBkK^ 


Robert Orfali 
Dan Harkey 


Client/Server Survival Guide 



l 

Copyright VNR, 1994. Reprinted with permission 

tijbsa 

JSL . 

9 

from Client/Server Survival Guide with OS/2 

(^1 

b 


l < 

rfali 

r « „ i /«x a B /e& e ■ 

Robert i 




Copyright VNR, 1994. Reprinted with permission 
from Client/Server Survival Guide with OS/2 


Client/Server Survival Guide 


Open DSM 
riatform 


HP OpenView 
IBM LAN NetView 
IBM NetView/6000 i 
Tivoli 


distributed System 
Management (DSM) 


SunNet Manager 
Novell NMS 
Cabletron 


Manager of 
Managers 



Netview (IBM) 
PolyCenter (DE C) 

■ Accumaster (AT&T) 


Vendor Anarchy 


End-User Interface Management Applications Management database 
Mamt. y 


/ConfiguratlonN 

x ^ Mgmt._ ^ 

'^Operations' 

^ _Mgmt._ S'\ 

/^BusinessN 
x^ Jvdgmt._ 

'^Problem^N 
v Mgmt. v' 




ChangeV 

yv&J- I 1 : 


rerfbrmanceN 
s^Mgmt.^^ 


Basic Platform 
Services 


■S'+rW&M - , « ', *1 


To Other __’*■ 1 


Managers j 


, Devices) /SNA)/ 


. CMIF NMVT SNMP ^ ORB E-Mail MOM | ^Middleware 


(Mainframe) VgntV ■ -L ^J 

^ ( Devices ) (Application). V®©®.8&y 


Copyright VNR, 1994. Reprinted with permission 
from Client/Server Survival Guide with OS/2 



Copyright VNR, 1994. Reprinted with permission 
from Client/Server Survival Guide with OS/2 













Robert Orfali 
Pan Harkey 


Client/Server Survival Guide 


Roots 


fC-LANs 
GUIs 


Mail#; 
4&l< 


: §E 


distributed Technology 


Decision support Groupf&utel 




Scope 


. 

client or server ciient/scrver i 



Robert Orfali 
Pan Starkey 


Client/Server Survival Guide 


Robert Orfali 
Pan Starkey 


Client/Server Survival Guide 



* 


Copyright VNR, 1994. Reprinted with permission 
from Client/Server Survival Guide with OS/2 


Robert Orfali 
Pan Starkey 


Client/Server Survival Guide 


First Wave Second Wave Third Wave 




Copyright VNR, 1994. Reprinted with permission 
from Client/Server Survival Guide with OS/2 


Where to Go for More Information: 


/ Client/Server Survival Guide with OS/2 
Van Nostrand Reinhold, 1994 
ISBN: 0-442-01798-7 
IBM Publication Number: SR28-5494 

/ Essential Client/Server Survival Guide 
Van Nostrand Reinhold, 1994 
ISBN: 0-442-01941-6 
IBM Publication Number: SR28-5572 


/ Client/Server Programming with OS/2 2.1 
Van Nostrand Reinhold, 1993 
ISBN: 0-442-01833-9 
IBM Publication Number: 0325-0650-02 



Copyright VNR, 1994. Reprinted with permission 
from Client/Server Survival Guide with OS/2 















SNA Client/Server 
in 

Communications Environments 


John Zeiger 
IBM 

Networking Software Division 
RIP, NC 


OVERVIEW 

What is Ql®rat/S®r¥®p? 

What sypp@rt SNA tav® for Cllent/Server? 

Ex®mpl@s of C!@ffit/S@fw©r in SNA Environments 
Hanaglnf Maintaining an SNA C3i@nt/S®rv®r environment 



Its® following terms, denoted by m asterisk f) el their Ural @ccyrr®nc®, 
sr® trad®marks of the IBM Corporate: 

kpm, as/w, acs s ffst72, ibm, N®tvi@w, oss, m/m®, sm@ t mm 

Til© tv'Swiiriny t©?BB!3, MciiStSw wj tww SStwrakS {**) wt thdar 1lf$t ©CCyrrljflC®, 
ar® trademarks of ®th@? companies: 

Apple, Appletalk, Brbsten Systems, ©c: Mail, DCL, InsessSon, IPX, 

Lotos Mmm, NetWar®, Novell, Systems Strategies, 3Com 


WHAT AND WHY 


CHent/Server is... 

- a dS@M program that r®^y®sts services, and 

- a server program provide® them. 

- Together they Implement a distributed application. 

Businesses want the host v@ly® for th®ir ioformaion technology dollar. 

Client/Server eompyting increase® value fey: 

- Integrating Mated systems 

- Combining desktop friendly fester®® with prodyetflon-capafeb bsck-end® 

- Enabling scalable applications 

- Lowering Incremental cost® 



Traditional! SNA 



CHwits 


Traditional Sf&A l?$©tw@rks support Cilent/Server 
a Host Is Server 

■ Ca@t®wsy provides LAM/WMi protocol 
conversion and concentration 

"dumfe termlnar applications ar® also sypp®st®d 


SNA is OPEN 



- Many Products 

- Many Venders 

- Many CennectMtiss 



TODAY’S SNA 




= Adelle Corp. 

» ALE Systems 

• American Management Systems, Inc. 
a American Software USA 

□ Andersen Consulting 
u Annatek Systems, Inc. 

a Arkansas Systems, Inc. 
a Automated Financial Systems, Inc. 

> Business Partner Solutions 

■ Candle Corporation 

a CCS Commercial Credit Systems 
» dtlsystems, Inc. 

■ COL Consulting, Ltd. 

■ Computer Associates International, Inc. 

■ Computer Corporation of America 
» Compuware Corporation 

■ Core Technology Corporation 
o Corrigan and Colville, Inc. 

° David Goodenough & Associates, Ltd. 

= Dun & Brads tree! Software Services, Inc. 

□ EDS Corp. 

o Enghouse Systems Ltd. 


» Enterprise Data, Inc. 
o Heuristics, Inc. 

■ I & G Software Associates, Inc. 
a Infinite Options, Inc. 
b Internal Systems, Inc. 
a International TeleManagement Corp. (ITM) 
a Intersolv, Inc. 
b ISI Systems, Inc. 
b J.D. Edwards, Inc. 
b Kentech Systems, Inc. 
a Lakeview Technology, Inc. 
b Lawson Associates Inc. 
a Lotus Development Corporation 
= Manager Software Products, Inc. 
b Marcam Corp. 

b Medical Development Systems, Inc. 
b Metafile Information Systems, Inc. 
b Micro Declsionware, Inc. 
b Mltek Openconnect Systems 
a Multi Soft, Inc. 
a Oracle Corp. 
a and many more 







CM/2 DgSTRgBUTED FEATURE CLIENTS 


C£a/2 ftertworfe Hods, Cette S®sve? 

LAN FBaSafw 



CM/a’s Distributed Feature (DF) supports the Cllent/Server mode!. 
CM/2 DF workstations: 

✓ Full SNA APTO support 

✓ Reduced price 

✓ Reduced DASD requirements 

✓ Reduced admteilstiratlffin costs 



- CM/2's SNA applications can communicate without change over a frame relay network. 

- Route Expander/2 sister product provides Frame Relay Connection 

- A SNA client/server model can be built on a frame relay network. 


SNA NETWORKS and NON-SNA APPLICATIONS 

























































ORDER ENTRY EXAMPLE 



SNA NETWORK MANAGEMENT 



- SNA provides the foundation upon which LAN and enterprise network mgmt solutions rely. 


OLYMPIC GAMES 


















SUMMARY 


SNA supports Client/Server Computing 

• Distributed Servers and Clients 

. Open Networking Standards supporting 
Client/Server applications 
. implemented by many vendors 

CSS/2 is a comer stone for implementing Client/Server 
applications 

■ support for many LAN/WAN connectivities 

• support for distributed applications 

• support for distributed network management and 
maintenence 

• it also supports host terminal emulation 







hi Networking Servics*s/DOS 
"APPC for DOS and Windows" 

-Announced: March 125,1992 






































s ^ v MS/DOS Features 


What Does MS/DOS Offer ? 


With NS/DOS, you can: 

■ Incorporate existing DOS and Windows workstations 
into SNA networks implementing APPC client/server 
applications 

- protect and manage migration of existing 
hardware/software investment 

- portability of applications and programming skills 
via Common Programming Interface- 
Communications (CPI-C) 

■ address new business IS solutions afforded by 
portable computers 


"Full Middleware Interface between Distributed Application 
and the Network" 


Client PC 


*cpfcj«lo: I 

-=2^=dr 


NS/DOS 




Sampto Program&'Tiiotc 
» APING 
. CPICWIN 

APIs 

*> Mvancotl CPI-C 

« Node Operator (or System Management. 
LU8.2 SNA Protocol Stack 
« Non-blocking 

CoonectMtios to Subaru ,:r amt APPN Noiwotha 
« LAN, Asyrx, SDLC-, Twinax 
• Supports Inbound Connection Request 
■ Supports Direct UQS.’Wlmiows tn 
DOSWindcws 




tmm 


ms 




^ What CPI-C Provides 


MS/DOS Advanced CPB-G Support 


■ Standardizes APPC interfaces 

■ Adopted by X/OPEN 

■ Simplifies programming of transaction programs 
a Provides portability of programs and skills across 

operating systems 



m 






■ 


HM 


■ CPI-C 1.0 - Simple peer-to-peer communications 

■ CPI-C 1.2 - Consolidated CPI-C 1.1 and X-OPEN 

extensions 

- Data Conversion: ASCII <--> EBCDIC 

- Security Extensions 

- Client/Server calls and functions 


■ CPI-C 2.0 - Non-blocking calls 

- Simulates full-duplex conversations 
full-duplex API 
half-duplex twin piped LU 


New Publications 

■ SC31-61 >30 01 CPI-C 2.0 Specification 

■ SC26 4399-06 CPI-C Refcic n cct 














SNA Protocol Stack Features 


Variety of Communications 


Robust LU6.2 Architecture Support 

- Non-blocking LU 

-Attaches Inbound Transaction Program Requests 
with Filtering 

- Windows Program Launcher Support 

- Outbound Conversation Password Security 


Wide Range of Supported Connectivity Options 
-Token Ring (4Mbps and 16Mbps) 

- Ethernet LAN 
-IBM FDDI LAN 

- PC Network LAN 

- Lan over Coax to 3174 

- Async to AS/400, OS/2, Advantis 

- SDLC 

Communicates with other APPC/CPI-C Systems 

- IBM: CICS,MVS,NetView,OS/2,OS/400 
AIX/6000,VM,VTAM 

- Non-IBM: Apple,AT&T,DEC,HP,Novell,Sun, 
SSI, Wang, etc. 




AW 


aw 




Local Area Networks 


' i:f SDLC/Async 


■ Token-Ring, Ethernet, FDDI, PC Network 
- Support via LAN Support Program (Part #93F2-456) 


■ Windows Enhanced Mode now supported 


« Coax (LAN over coax) 

- PRPQ P85114 

- 3174 Config Support C or Config Support B Release 3 

with RPQ8Q0718 Q]J5 



. SDLC 

■ Asynchronous: 

- No special adapters 
-"SDLC" over async 

- Catchers 

► AS/400 

► OS/2 

► Advantis Network 









■ Connect to AS/400 via: 

- Workstation Controller 

- 5394 
-5494 


AS/400 



Client PC 



Pipeline 
File Xsfers 
DB Update 
inquiries 
Credit Checks 


Conversational 


Server/M ainlrame 



Application Portability 



industry Leading Advanced GPi-G implementation 


New API for Communications System Management 


► Additional Functions 

- Full Duplex Conversations 

- Allows Applications to Send/Receive Simultaneously 

- Supports Multimedia Applications 

- Non-Blocking Verbs 
► Asynchronous Control 

- Data Conversion 

- ASCII <-> EBCDIC 

► IBM Person to Person for Windows 



■ Node Operator API 

- Control NS/DOS Connectivity and Configuration 
from an Application 

- Interfaces: 

► Link Management 

► Session Activation 

- Partner LU Definitions 

► Mode / Sidelnfo / TP Definitions 
-Windows Management Application Included 


Improves Integration of 
Applications & NS/DOS 












Greater Application Initiation Flexibility 
Simpler Client/Server Development Environment 

• Primary Link Station Support 

- Allows an Adjacent Node to Activate NS/DOS Link 

- Permits DOS/Windows-to-DOS/Windows 
Communications Without A Network Node 


• ■ 
■ 


■ Basic License - Program Package 

- $195 (US) 

- Program Diskettes 

- Softcopy Documentation Diskette 

- Hardcopy Documentation 

- LAN Support Program Version 1.33 

- LAN over coax PRPQ 

■ Additional License - Right to Make 1 Copy 

-$145 (US) 

■ Program Numbers: 

- 5871 - AAA P/N 20G0437 (NA.LA.APG) 

- 5621 - 344 P/N 20G0437 (EMEA) 



■ Software 

- DOS Version 3.3 or later (or DOS J5V) 

- Microsoft Windows 3.0 or later 

■ Hardware 

-Any IBM PC or 100% IBM Compatible PC 

- A network adapter 


"Full Middleware Interface between Distributed Application 
and the Network" 

Ssmpto Program&Tools 
e Fiht Transfer 
« Emulator 

APfs 

«Industry Landing Now 

LU&.2 SNA Protocol Stack 
■ Motnory Cancsrvetlon i da Window* PU -s 
■and PCS Extender 
« Microsoft CHICAGO 
n SNA Lovel Com;inttsion 
a Improved Sorvicoatrilify 

Additional Communications Flexibility 
m AriyNet (tm) E.nM&nutn! 

« Support for non-IBM DLC software 
- X.S5, ISDN, Yd ret os a 
a Dots Link lntorfoo#£ to ftDIS Adaptors 
« Improved Romoto Access 


Client PC 










NS/DOS Benefits 


APPC Market Enablement 


IBM APPC Solution tor DOS and Windows 

■ Client/Server Applications with Servers/ 
Mainframes 

■ Smaller / Portable PC’s 
* OS/2 Migration Enabler 


APPC Market Enablement 
Dept AB7/ Bldg 502 
P.O. Box 12195 

Research Triangle Park, NC 27709 USA 


Internet: 

CompuSeive: 

VM: 

Phone: 

Fax: 


appcmrkt@vnet.ibm.com 

76711,370 

APPCMRKT at RALVM6 

1-919-254-4957 

1-919-254-6050 


Internet Anonymous FTP Site: networking.raleigh.ibm.com 
CompuServe Forum: GO APPC 





CICS 0S2 Client Server 
Computing 


A WORLD OF CHOICE 

Alex Aversano 

Software Marketing Specialist 
IBM US M&S 



Copyright 1994 IBM Corporation 


CICCS 010 


'^7 77?e CICS Family 

€) Approx. 2000 vendors otter 5000 + CICS Packages 


Estimated 

300,000 

Programmers 


«> Over 
50,000 
Server 
Licences 
Worldwide 




DOS • Wm 



Application Serwr 


• 90% of 
Fortune 
500 use 
CICS 


« Over 1 Billion Lines of Code in Applications 


Copyright 1994 IBM Corporation 


CICCS 020 












Trademarks 


The following terms used in this presentation are trademarks or (R) registered 


trademarks of IBM Corporation in the United States and/or in other countries: 

IBM(R) 

CICS/6000 

PS/2(R) 

CICS 

MVS 

ES/9000 

CICS/ESA 

VSE 

RISC 

CICS/MVS 

AIX(R) 

System/6000 

CiCS/VSE 

OS2/(R) 

AS/400 

CICS/OS2 

0S/400(R) 

DB2 

CICS/400 

LANDP 

SQLVDS 

The following terms are trademarks of other companies or institutions: 

UNIX 

UNIX System Laboratories, Inc (R) 


OSF 

Open Software Foundation, Inc 


DCE 

Open Software Foundation, Inc 


Oracle 

Oracle Corporation 


Informix 

Informix Software Inc 


Ingres 

ASK Corporation 


Sybase 

Skybase Inc 



Copyright 1994 IBM Corporation CICCS 030 



Agenda 


• What is Client/Server Transaction Processing? 

• How CICS enables Client/Server 

• CICS directions for Client/Server Transaction 
Processing 


Copyright 1994 IBM Corporation 


CICCS 040 
























' 7 * Client/Server Transaction Processing 

. . . - . . . . 



• OLTP moving to client/server networks 
9 Deploy applications throughout the network 

























































































Client/Server Transaction Processing 


• Clients have low utilization 

• Servers have high utilization 

• Network topology is determined by load 

• Applications are distributed, relocated and managed 

"The Network is the system" 



Copy fight 1994 IBM Corporation 


CICCS 070 



Data Oriented vs Application Oriented Servers 


Remote data 
Access 


Database 

Server 


Application 

Server 



Closed 

Server 


Business 

Logic 


Data Access 


Stored 

Procedure 


RDBMS using 

Stored 

Procedures 


Business 

Logic 


Presentation 


Business 
Logic 
harder to 
Control 


Data Access 


mm 


Business 

Logic 


« Many SQL 

• Less SQL 

exchanges | 

Exchanges | 

per 1 

per Business F 

business I 

Transaction I 

,55™ transaction ebssssL 



Business 
Logic on 
Server 
Easier 
to Control 


One 

Exchange 
per Business 
T ransaction 


Presentation 


Presentation 


n 


Copyright 1994 IBM Corporation 


CICCS 080 





















Application ServepBenefits 

1. GATEWAY between old and new applications 

2. INTEGRITY across heterogenous resources 

3. PLATFORM for networked applications 

4. INDEPENDENCE from infrastructure 

5. PERFORMANCE optimization 

Copyright 1994 IBM Corporation CICCS 100 



Client/Server Application Models 


« Where can you split a client/server application? 




Customer application 

— ’ 





: Pres: : : 

" Pres 

Business ; 


Data 

: Mgmi: 

Logic 

Logic 

Logic 

. . Mgmt 



t 


Possible machine 
boundary 


Remote 

Application 


Appl-to-AppI .Remote 

Communication Data 


► Conversation 


[xTHegSn 7 ] 

♦ Call 


► Message 


Copyright 1994 IBM Corporation 


CICCS 110 


























Client Server Application Structure 




Support for Client/Server Models 


CSCS has a rich set of functions for client/server 
interoperation TODAY: 

• Transaction routing (Remote application) 
m Function Shipping (Remote data) 

- File Control (Record oriented files) 

- Temporary Storage (Temporary files) 

- Data Tables (Main storage files) 

- Transient Data (Queues) 

• Distributed Transaction Processing (Conversation) 

• Distributed Program Link (Call) 

• Asynchronous Transaction Processing (Message) 


Collectively known as CICS InterSystem 
Communication (ISC) 


Copyright 1994 IBM Corporation 


CICCS 120 















Distributed Program Link 


CICS1 


C1CS2 






Location of 
remote program 
transparent to 
programmer 

Easy access to 
remote data J 
functions (e.g. 
databases) 

Optional data 
conversion via 
template 



Copyright 1994 IBM Corporation 


CICCS 130 


Transaction Routing 




Transparent to 
users and 
programmer 

Run transaction 
where programs 
and data reside 

Reduce network 
traffic 


Copyright 1994 IBM Corporation 


CICCS 140 




































Copyright 1994 IBM Corporation 



Open Client/Server with CtCS 


DOS Windows 




MAC 





Transport Protocols 



CICS/HOST 


CICS/HOST 


CICS/HOST 


CICS/HOST 



Copyright 1994 IBM Corporation 



































CiCS Client Architecture 



Customer Applications 

Terminal 
_ emulator 

ECI EPI 

Interprocess Communications 


Interprocess Communications 

Scheduler 
CICS Transformers 

Mapping to LAN Transport 


DC E/RPC 
NetBios 


Copyright 1994 IBM Corporation 


External Call Interface (ECI) 


CLIENT machine 



SERVER machine 



Remote SERVER 



A method for a Client Application to call a new CICS Server application 
Enables GUI applications to exploit CICS network 
Appears as Distributed Program Link at server 


Copyright 1994 IBM Corporation 


CICCS 170 


























































External Presentation interface (EPi) 


CLIENT machine SERVER machine Remote SERVER 




A method for a PC program to pretend to be a 3270 and use a 3270 
oriented CICS apfplication 

Allows a GUI front end to be added to an EXISTING CICS application 
Appears as Transaction Routing at the Server 

Copyright 1994 IBM Corporation CICCS 180 



CICS Client Directions 


• Platform choice 

• More protocols (TCP/IP, APPL) 

• Enhanced API's (ECI, EPI) 

• Application development tools 

• Object-Oriented programming (C++, Smalltalk) 
« Systems management 


Copyright 1994 IBM Corporation 


CICCS 200 
































Clients to CICS OS/2 Server via NetBios Emulation on IPX 
CICS OS/2 Data on NetWare ^Server 

Clients to CICS/ESA via NetWare ^Server with Netware for SAA ' Bl 



Application Development Tools 

























Application Development Tools - CICS OS/2 Examples 




User Interface Client Application 


Server Application 





Copyright 1994 IBM Corporation 


CICCS 230 




Copyright 1994 IBM Corporation 


CICCS 240 




















CICS Server Directions 


4ft 

<1 

<(» 

<1 

(I 

(ft 



Platform choice 
Flexible performance 
Scaleable performance (SMP) 
Enhanced usability/robustness 
Leading edge function 
Application development tools 
Object-oriented programming 
Systems management 

Copyright 1994 IBM Corporation 


CICCS 250 


CICS Platform Support Directions ? 


Mid 9Q’s OLTP Operating Environment 


Proprietary 

UNIX 

OS/2 

W/NT 

N'ware 

WPOS 

Other 

Unisys 

DEC 

HP 

Tandem 

etc 

! 

IBM 

380 

400 

RISC 

IBM 

HP 

SUN 

DEC 

S-G 

Pyramid 

Tandem 

Intel 

NCR 

Unisys 

Sequent 

SCO 

Intel 

Intel 

S-G 

Alpha 

Power 

PC 

Intel 

HP 

Power 

PC 

. 

i 

:j 


Goals 

• Port CICS to major industry 
Platforms: 

« Meet Existing Customer 
Requirements 

- grow/protect investment 

- client/server 

« Open--^ Platform 
Independence 


Status 

Sept 1992 
March 1993 
June 1993 
Dec 1993 

Feb 1994 


Hewlett-Packard® (OEM) 
Apple®Client [! 

Wi.<dow^4l (Intel) || 

NetWare .Client 
NetWare Interoperability j 
DEC OSF/1 Axp® jj 


I Going Places with CICS! 


Copyright 1994 IBM Corporation 


CICCS 260 























Copy tight 1994 IBM Corporation 


CICCS 












994 Olympic Winter Games, Lillehammer 


2,000 athletes from 75 countries 


12 sports over 11 sites 


3 billion TV viewers world-wide 




m 




50,000 accredited personnel 2,000 volunteers & employees. 


100,000 spectators per day 




• Absolute deadline^ ' 

w . 


« Only one chance ^ 

• Extreme media focus 



8,000 media r epresentatives 



Copyright 1994 IBM Corporation 


CICCS 



LOOC 
Administration 


1994 Olympic Winter Games, Lillehamm er 


Results &.R^bSngs: P.r6tSes5l'!^^ Pistribution 

♦ Hjg|p^ OLTP 

P^m^ntator Information System 
J||P|tant results and competitors data 
RS/6000S £-* Ji^ulti-media interface 

* Jgfo '94 

" “Public access to Olympic Information 
Large database 

I Games Management 

%• Accreditation, ticketing, accommodation . . 
|. Host OLTP 

DAK '94 

• CAD/CAM design 

LOOC Administration 

* Office automation 


3000 PS/2s 


Copyright 1994 IBM Corpoiation 


CICCS 































1994 Winter Olympic Games 

CICS : as a ..HighPertormapce Cgienf Server OLTP 


























CICS at Ullehammer 


"CICS reliability makes it the obvious choice" 

... "there are no second chances witliJIhp&ymps^Ga^k - so 
we have to have a system with a tradk^^ordrofdbntroffing 
information moving between thpiMnds of workstations, and 
able to stay up 24 hours a dayWi yfe need it." 

C | Reider Rossum, IBM Olympic Project 
S' Director 

"CICS provide ] 

s the robust, industry standard middleware we need ; not only is 
it designed to hapdib a htghfrolume of transactions, but it also 
offers the addeSgecurity^ofJfault tolerance and recoverability.” 

'if :?s> v Frode Finne, Project Leader 

-feA " Ullehammer Olympic Organizing Committee 


Copyright 1994 IBM Corporation 


x C/CS Vision of Client/Server_ _ 

Industrial strength CICS servers on: 

• IBM hardware and operating systems 

• Key non-IBM hardware/operating systems 

Each supporting: 

« The compatible CICS family API 

• Client/Server interoperation with other CICS servers 

• Thin CICS clients 

- DOS, Windows, OS/2, Apple Mac, other 

• Non-programmable terminals and terminal emulators 
® Enhanced systems management 

• Productive application development 


Copyright 1994 IBM Corporation 


CICCS 280 























What All Those Letters Stand For 



Introducffimi® 




Dawn Comfort 

APPC Market Enablement 

Rosoardi Triangle Park, NG 


■ APPC: Advanced Program-to-Program 
Communication 

m APPN: Advanced Peer-to-Peer 

i^eiWuiKiny 



mm 


^ APPC and APPN 


mi® 

VWI? 

CSSs. 


H8. Tfota It Jm. 
Fine, «n$ 




<S€>©d bye. 



APPC 


Why Us® APPC? 


■ For its connectivity 

- IBM platforms 

- Non-IBM platforms 

« For its portability 

» For application independence from the type of link 
a For its built-in features for client/server applications 


Th® Phone Company 


APPN 


For its performance! 






si AS/400 

- CICS 

- DOS 

* DPPX/370 

* IMS 

- MVS 

* OS/2 

■ RISC System/6000 


■ Series/1 

■ System/36 
« System/38 
« System/88 
. TPF 

« VM 

■ VI AM 

» 4680/4690 Store 
System 



Vendors Producing 
APPC Applications 


a AdsJIs Corp 
o ALE Systems 

■ American Management Systems, Inc, 

■ American Software USA 
<• Andtsraan ConsuMng 

a Annate Systems, Inc, 
a Arkansas Systems, Inc. 
a Automated Financial Systems, Inc. 
a Business Partner Solutions 

■ Candle Corporation 

CCS Commercial Credit Systems 
a Cliisystems, Inc. 
a COL Consul tin g, Ltd. 
a Computer Associates International, Inc. 
a Computer Corporation of America 
a Compuware Corporation 
a Cor® Technology Corporation 
a Corrigan and Colville, Inc. 

= David Qoodenough & Associates, Ltd. 

* Dun & Bnadstreet Software Services, Inc. 
a EDS Cotp. 

> Engftouse Systems Ltd. 



a Eni or prise Data, Inc. 

a Heuristics, Inc. 

a I & G Software Associates, Inc. 

a Infinite Options, Inc. 

s Internal Systems, Inc. 

a InlemaHonel TeleManagemenl Corp (ITM) 

■ Intwsotv, Inc. 

•> (SI Systems, Inc. 

» J.D. Edwards, Inc. 
a Kantach Systems, Inc. 
a Lakevlew Technology, Inc. 
a Lawson Associates Inc. 
a Lotus Development Corporation 

□ Manager Software Products, Inc. 

□ Mercsm Corp. 

a Medical Development Systems, Inc. 

® Mefallle Information Systems, Inc. 
a Micro Bad si on were, Inc. 
a Mitak Open connect Systems 
a Multi Soil, Inc. 

» Orade Corp 
a and many more 


Non-IBM APPC Platforms 


Advanced Computer Comm. 

a NJE.T. 

AsndaW 

o NetSoft 

Apple Computer, Inc. 

o Network Systems Corp 

AT&T/NCR 

« Novell, Inc. 

ASacTwisie 

= Open Connect Systems 

Brtaton Systems, toe. 

» Orton Group 

BuB Information Systems 

3 Protean 

C&btetron Systems 

o R<Rh-hii Software, Corp 

Cisco Systems 

» Jtetfct 

CLEO Communications 

> Stemens-Ntedorf 

Compeofl Services 

s Streauo Computer Inc. 

Compulone 

■ Sun Microsystems, toe. 

CrossComm 

□ System Strategies, Inc. 

DC A 

a Tandem Computers, Inc. 

Date Connection Ltd. 

b Tang ram Systems Corp 

Date General Corp 

a Testes Instruments 

Digttei Equipment Corp 

s Itogansnann-Bass 

Dig&al Communteatton Associates, Inc. 

-UWhom 

Eicon Technology, Inc. 

3 Ltolsys 

Harris 

* Wall Date 

Hewtett-Pacfcwd Co. 

a Wang Laboratories, Inc. 

toasarion 

. WeWleet 

Microsoft 


NCR Corp 




W 

Portability 


■ Common Programming interface for Communications 
(CPI-C) 

- Programming interlace for APPC 

- Consistency across platforms and languages 

- Portability of applications 

- Portability of skills 

- Communication with native APPC 
programs 












Independence from type @1 link 



Functions important tor client/server development 

- Class of Service (COS) 

- Security 

- Synchronization 
“ Error recovery 

Benefits 

- Reduced development time 

- Lower development costs 












What Does APPN Do for Me? 


APPN Network Participants 


■ Reduces costs and increases productivity 

- Finds resources automatically 

- 'Plug and work" network 

■ Works for both IBM and non-IBM platforms 

- Open architecture 

- Widely available 



NN 


a Network Node(NN): routing nod© 

■ End Nod© (EN): workstation or data host 
a Low Entry Networking Nod© (LEN): workstations 




mm 



mm 



For peer communications, each machine must 
have definitions for every ether machine. 


APPC Configuration With APPN 



Each machine only knows about Its network node 




























Network Growth Without APPN 



PC4 n to toow about ®¥®ry@ra® and avary©?!® 
to know PC4 _ 


it 


m 



APPN Directory 



■ Reduces network definitions 
a Dynamically locates network resources 
a Central Directory Server (CDS) 


Network Growth With APPN 



PC4 naada to kn®w about Bt» network nod®. E^arytitolng « 
foandlad automatSeaBBy,. 




APPN Topology Dynamics 



b Recognize and record link characteristics 

■ EN and LEN nodes do not maintain network topology 

■ Network topology flows optimized 










Open Architectures 


^ APPN is Available 


■ Available 


■ APPN Implemented Workshop (AIW) 


■ EN and NN architecture specifications available 
* EN and NN technology agreement 


■ NN source code licensing 


- System/36 

* AIX SNA Server/6000 
a AS/400 

* OS/2 

* 3174 

- DPPX/370 
a NetView 

a VTAM 

a 6611 Network Processor 
a 8250 


- Brixton Systems, Inc. 

- Systems Strategies, Inc. 
a Data Connection Ltd. 

a Insession 
a 3Com 
a Wall Data 


APPff 


Ȥ' 


a * Now AFPC/APFN @r pr®$uef® 

Bast pi 



APPM - More Products Coming Soon 


<r APPC and APPN Benefits 


» Announced or Expected 
-8260 

a Ascom Timeplex 
a Cisco Systems 
a CrossComm 
A N.E.T. 
a Proteon 

- Advanced Computer 
Communications 

- Apple Computer Inc. 

- Bytex 

- Cabletron Systems 

- Chipcom 

- Eicon Technology, Inc. 

- Hewlett-Packard Co. 


- Hitachi Data Systems 

- Memorex Telex 

- Network Systems Corp. 

- Northern Telecom 

- Novell, Snc. 

- Retix 

- Siemens-Nixdorf 

- Stratus Computer, Inc. 

- Sync Research 

- Ungermann-Bass 

- Unisys 

- Weltfleet 


■ Wide range of vendors and platforms - open and available 


■ Provides an ideal base for new client/server applications 


® Robust networking capabilities 


★ “ h«v® Ho*n8®d APPN NN ood® Irom IBM 








Getting Started with APPC/APPN 


■ Recommended IBM publications 

- APPC and CPI-C Product Implementations (GG24-3520) 

- APPN Architecture and Product Implementation 
(GG24-3669) 

- CPI-C Reference ($026-4399) 

_ Best of APPC, APPN, & CPI-C CD/ROM(SK2T-2013) 

m APPC Developers Assistance Program (DAP) 

m APPC/APPN Technical Conference '94 

- Amsterdam, September 26-30 
* APPC Connection newsletter 


APPC and APPN Online information 


■ BBS Service 

- CompuServe 

- OS2BBS on IBMLINK 

- IBM Internal Forums 


b APPC/APPN Information 
-GO APPC 

- APPC CFORUM 

- APPC Forum 

- Anonymous ftp to 
networking, raleigh.ibm. com 
(192.35.236.4) in 
pub/appc_appn 








More questions? 


APPC Market Enablement 
Dept. E42/Bldg 502 
P.O.Box 12195 

Research Triangle Park, NC 27709 

VM: APPCMRKT at RALVM6 

Internet: appcmrkt@vnet.ibm.com 

CompuServe: 76711,370 !GO APPC 

Phone: 1-919-254-4957 

Fax: 1-919-254-6050 














4 Overview 




Xv::v:-::v::x:>^ 

•x^wXv^wX'X'WXvwr-K' 


WtLirsNewinAPPC 

m mv+r%Aia ' 

and APPN 

Ifgy 



APPC Market Enablement 
RTF, North Carolina USA 


APPC or APPM ??? 


H®ik> 
U<m w® 
©fe. 


HL Thl® 9® Jo®. 
Fin®, and ymmofiH 


©ood fey®. 


®<m4 fey®. 



« What’s new with 

- APPC: Advanced Program-to-Program Communication 
~ CPI-C: Common Programming Interface for 

Communications 

- APPN: Advanced Peer-to-Peer Networking 

« What’s new with 

= Communications Manager/2 

- Networking Services/DOS 
“ SNA Server for RS/6000 

■ What’s coming with APPN 

W 0*q«n*J»n 10M &%mM 


my*"*:* 

^ IBM APPC Platforms 


« AS/400 

a Series/1 

» CICS 

« System/36 

■ DOS 

■ System/38 

- DPPX/370 

a System/88 

* IMS 

a TPF 

- MVS 

a VM 

« NetView 

a VTAM 

- OS/2 

a 4680/4690 Store System 

■ RISC System/6000 




{CJ EMOorpsrHSwiISM 


P^tsy 0*rp«raS€fl1ES4 















a Advanced Computer Comm. 


□ Appfe* Computer, Inc. 
a ATftT/MCR 


a GrteSwi Systems, Inc. 
a Bu8 Information Systems 
a Cabteiron Systems 
a Cisco Systems 
a CLEO Communtemtons 
a Compsefl Services 
a Ccmputoroe 
a CrossComm 
a DCA 

a Data Connection Ltd. 

□ Data General Corp. 
a Dig Sal Equipment Corp. 
a Dig Bat Communication Associates, Inc. 
e Eicon Technology, hie. 
o Harris 

a Hswtett-Peckard Co. 
a Ensession 
a Micro soft 
a NCR Corp. 


a N.E.T. 
a NetSoft 

a Network Systems Corp. 
* Mov»«, Inc. 
o OpenCcmed Systems 
a Orton Group 


re, Corp. 

a Retix 

a Stemsne-ftodor? 
a Stratus Computer Inc. 
a Sun Micro By stems, Inc. 
a System Strategies, Inc. 
o Tandem Computers, Inc. 
a Tang ram Systems Corp. 
a Teaas Instruments 
a DnganmmvBeca 
a Unlhom 
a Unisys 
a W»fl Date 

B W»ng Laboratories, Inc. 


AK 




Platforms Offering the CPI-C API 


■ gElb£JMaLAEE£ 

- Data General Corp. (Avilon) 

- DCA (DOS & OS/2) 

- IBM AIX SNA Services 

- IBM CICS 

- IBM IMS 

- IBM MVS 

- IBM NS/DOS 

- IBM OS/2 

- IBM OS/400 

- IBM VM PWSCS 

- IBM VM with CMS 

■=- IBM 4680 Store System 

- Insession (Tandem) 

- Rabbit Software (DOS) 

- Systems Strategies, Inc. 
(Unix) 


. CP8-C over other transports 

- IBM VM PWSCS (NetBIOS, 
IPX, TCP/IP) 

- Tangram Systems Corp. 
(proprietary) 

» Transarc (proprietary) 

■ AnnPMnpyi Sup p m 

- Apple Computer, Inc. 
(Macintosh) 

- Brixton Systems Inc. (Unix) 

- Bull (Unix) 

- Compsoft (GO, pen-based) 

- Hewlett-Packard Co. (Unix) 

- Microsoft (Windows) 

- Novell, Inc. (NetWare) 

- NSA (DOS) 


mm 


Portability of code and skills 

- Platforms 

- Programming languages 


■ CPI-C programs can talk to "APPC" partners 


4«■ 


CPI-C Level 1.2 


* CPI-C is part of the X/Open standards 

- X/Open CAE Specification, CPI-C 

- Document Number C210 ISBN: 1-872630-35-9 

® Level 1.2 integrates X/Open extensions: 

- Non-blocking calls 

- Accept multiple incoming conversations 

- Security calls 

- Data conversion (ASCII to EBCDIC) 

- Greater than 32K Send/Receive 









GPI-C Level 2 


CP1-C !mplementer's Workshop 

a Enhanced server model support 

- Full-duplex conversations 

- Expedited data 

- Nonblocking enhancements 

* Distnbuted services exploitation for DGE 

- Directory services 

- Security services 

* Built-in multiprotocol support 

- SNA/APPC 

-OSI 



^ APPN is Available 


* Available 

- System/36 

- ADC SNA Server/6000 

- AS/400 
-OS/2 
-3174 

- DPPX/370 

- NetView 

- VTAM 

- 6611 Network Processor 
-5494 

-8250 

- 3Com 

- Brixton Systems, fnc. 



- Data Connection Ltd. 

- Snsesslon 

- Systems Strategies, Inc. 

- Wall Data 


WinSNA 


m Standard for communicating with Windows 

applications 


» Includes four SNA APss 

m OC/O CAn/iAA<j 

IIUIII L-AlCI 1UOI VIL/CO 

- LUA 


- EHLLAP! 


- APPC 


-CPI-C 


■ Includes Windows-specific additions 

APPC AMI 

^ APPN is Available 


a Announced or Expected 


-8260 

- Hitachi Data Systems 

* Ascom Timeplex 

- Memorex Telex 

* Cisco Systems 

- Network Systems Corp. 

a CrossComm 

- Northern Telecom 

★ N.E.T. 

- Novell, Inc. 

* Protean 

- Retix 

- Advanced Computer 

- Slemens-Nixdorf 

Communications 

- Stratus Computer, Inc. 

- Apple Computer Inc. 

- Sync Research 

- Bytex 

- Ungermann-Bass 

- Cabletron Systems 

- Unisys 

- Chipcom 

- Wellfieet 

- Eicon Technology, Inc. 


- Hewlett-Packard Co. 


★ “ have Hoanwd APPN NH cod# from IBM 


mm 








DLUR/S Overview 


* Complete solution for providing 3270 datastream over 
an APPN network 

- LU types 0,1,2, and 3 

- All 3270 functions 

- Network managment 

* Flexible connection to the network 

- Boundary Function now resides in DLUR node 

* LU-LU sessions flow directly to the application host 


CorpensaonlBM 


Extended Boundary Function: DLUR/S 



tpj B&3 C®rp«r«0on19W 




















































Extended Edition(EE) for OS/2 1.1-1.3 


« + Networking Services/2 (NS/2) 

■ Extended Services 1.0 on OS/2 1.3. 2.0 

* Communications Manager/2(CM/2) 1.0 on OS/2 
1.3(+CSD5050), 2.0 or higher 

■ CM/2 1.11 on OS/2 2.0 and higher 




W 

^ Communications fySanag@r/2 1=1 


« Common 3270/5250 emulators 

- Dynamic remap of keyboards and color 

- Automatic font selection 
« Data compression 

® Enhanced gateway capacity and support 
■ Installation/configuration enhancements 

- Remote installation and configuration 

- Automatic hardware discovery 

« Support for PCMCIA 3270 adapters 



» Separate from Database 
® CPI-C extensions 

a Remote installation and configuration 
= ISDN support 

■ First Failure Support Technology 

■ PM configuration and tools 

■ Multiple PU 2.0 attachments 


HSfC 


mm 


Communications Manager/2 1.11 


« SNA Phone Connect 

- SNA over Async 

► Non-switched autodial 
- Switched autodial 

- Autodial Wide Area Connector (WAC) adapter 

- Autodial Multi-Protocol Adapter (MPA) 

■ APPC Application Suite 

■ Dependent LU Requester 







II [l] 


Manager/2 APPC 


Version 1.0: 

- APPC API 
-CPI-C API 

* CPI-C 1.1+ capability 
«> Multiple TPs/process 
Multiple conversations 

Version 1.1: 

- APPC API 

- Full duplex conversations 
■> Non-blocking verbs 
► Expedited data 




Networking Sen/sces/DOS 


DOS and Windows 
Provides the CPI-C interface 
- Family-API programs can run in DOS or OS/2 
Supports Low-Entry Networking (LEN) 
Communicates through APPN network nodes & SNA 
subareas 


Communications Manager/2 Future 


■ Session encryption for APPC 
» APPC syncpoint enablement 

■ Dynamic definition of dependent LUs 
« Security improvements 

* APPN enhancements 




mm 


What Does NS/DOS Offer ? 


Full Middleware Interface between Distributed Application 
and the Network 


Ctteni PC 



Sample Frogram&Toofs 
» APING 
« CPICMN 

APIs 

» Advanced CPI-C 

« Nods Operator for System Management 

APPC SNA Protocol Slack 
» Non-blocking 

Connectivity to Subarea and APPN Networks 
« LAN Async, SDLC, Tvrfnax 
» Supports Dlr&cri DOS/Wlndowx to 
DOS/Window s 





Additional CPI-C functions 

- Full duplex conversations (simulated) 

- Non-blocking verbs 

- Data conversion 

Nods operator A%P! 

- Control NS/DOS connectivity and configuration from an 
application 

Primary link station support permits 
DOS/Windows-to-DOS/Windows communications 
without a network node 



AIX and UNIX Platforms 


- APPC and CPI-C 
«=» SNA Services/6000 1.2 

- Other OEM products for UNIX 

■ APPN support 

- In renamed SNA Server/6000 2.1 

- In new SNA Gateway/6000 

- Other OEM products for UNIX 


Full Middleware Interface between Distributed Application 
and the Metwork 

Sample Progmm&N'ools 
m File transfer 
' a Emulator 

. APfs 

* Industry leading new 

APPC SNA Protocol Stack 

« Mem or v conservation via Windows DLLs 
and DOS sxtftnder 

* Microsoft CHICAGO 

* SNA level compression 

Additional Communications Flexibility 
o AnyNet Urn) ana Moment 
• X2S, ISDN, Witness 
= Data link Interfaces to NEKS adaptors 





^ APPC/APPN Enhancements for AIX 


- APPC API 

- Allocate listen with wildcard 

- TP can run without configuration 

- Deactivate sessions 

- CPI-C API 

-CPI-C 1.0+ capability 

- Multiple TPs/process 

- Multiple conversations 

- Security 

s APPN network node and end node support 







Fewer expensive links to 
remote hosts and better 
resource utilization 
Multiple PUs for SDLC and 
FDDI 

Quick configuration options 
Downstream dependent LU 
support 

Performance enhancements 



^ SNA S@rv@r/6000 Future 

* Integration of AIX V4R1 Base Operating System 

■ Channel attachment to the host 

■ Implementation of key DCE functions 

- Directory 

- Security 



m€ 


■ FDDI adapter support 
® Xsna 

■ APPN enhancements 

- Central directory client 

■ Any Net feature 

- Sockets over SNA 

- APPC over TCP/IP 




APPtf 


What’s Coming with APPN 

■ Increased vendor support 
* New product announcements 
« High Performance Routing (HPR) 
» Migration to ATM 







>/! Getting Started with APPG/APPN 

■ Recommended IBM books 

- APPC and CPI-C Product Implementations (GG24-3520) 

- APPN Architecture and Product Implementation 
(GG24-3669) 

- CPI-C Reference (SC26-4399) 

- Best of APPC. APPN.. & CPl-C(SK2T-2013) 

— CM/2 Version 1 G New Features (GG24-3Q53) 

“ CM/2 Version 1.1 Enhancements (GG24-4142) 

m APPC Developer's Assistance Program (DAP) 

a APPC/APPN Technical Conference 

- Amsterdam, September 26-30 


^ APPC Market Enablement 


APPC Market Enablement 
Dept E42/ Bldg 502 
P.O. Box 12195 

Research Triangle Park., NC 27709 


VM: 

Internet: 

CompuServe: 

Phone: 

Fax: 


APPCMRK i at RALVM6 
appcmrkt(S>vnet. ibm.com 
76711,370 !GO APPC 
919-254-4957 
919-254-6050 


APPC Connection Newsletter 






APPN and TCP/IP: 

A Comparison of Protocols 



APPC Market Enablement 
IBM Networking Systems 
Ftesearch Triangle Park, NC 
appcmrkt@vnet.ibm.com 
APPCMRKT at RALVM6 
919 - 254-4957 



Agenda 


■> Networking Blueprint 
»< Platforms and applications 

■ Routing 

•* Other features 

■ Summary 


(O IBM Corporation 1994 

































































































































































Comparing The Protocols 



<q IBM Corporator! 1W4 


Availability of Platforms 


APPC/APPN 

- APPC is available for almost all systems 

- APPN 

► Is available for IBM, 3-Com, DCL, and Wall Data systems 

> Will be available this year for more systems, including 
Wellfleet, Proteon, Cisco, and HP 


TCP/IP 


- Available for almost all systems 


Origins 



- Running in business networks 


- Attaching systems to hosts 

- Moving to workstation/LAN networks 

» Focusing on robust, industrial strength applications 


- Minimize line costs 


- Running in government, education & research 

- Providing workstation connectivity 

- Moving to business networks 

- Focusing on multivendor connectivity 

- Minimize host usage 


(q IBM Corporator! 1B&4 


Applications 


APPC/APPN 

- Large numbers of business applications 

- "Applets" are just becoming available 


TCP/IP 

- Mostly research and university applications 

- "Applets" are widely available 

- More business applications being written 


(q IBM Corporate! 1W4 









Network Components 


Addressing 


m - End Mode A PPH Metwork 

MM - Metwork Node 



'W' 


APPC/APPN 

- 8 character network name, a and an 8 character LU 
name 

- e.g. "USIBMNR.SJOYCE" 

- Network id registry is available 


H - Host node TCP/IP Network 

R - Router 



{C) IBM Corporation 1&S4 


TCP/IP 

- Hierarchical, name@name3.name2.name1 

- e.g. sjoyce@vnet.ibm.com 

- Map to 32-bit IP addresses 

- Mapping is done in domain name server 


<C) IBM Corporator 1BS4 


Configuration 


Routing 


APPC/APPN 

- Required Items 

> Control point name (network id and LU) 

- Address of network node 

- Connection network id (for LANs) 

- Much easier than subarea SNA 

- Don’t have to change addresses if you move 


TCP/IP 


- Required Items 

► Host name 
- Domain name server 
* Default router 

- Have to change addresses if you move 


APPC/APPN 



- Connection oriented 

- Class-of-service routing: picked based on cost, speed, 
delay, security, ... 



TCP/IP 



- IP is connectionless, TCP provides the connection 

- All data is treated the same 

- Routes are usually picked to minimize "hops" 


<C) IBM Corporator! 1994 


(C) IBM Corporator! 1&S4 




































Congestion Control 




APPC/APPN 

- Proactive, slows down before trouble 

- Hop-by-hop, adaptive window size, potentially very 
large buffers 

- Prevents overflow of intermediate systems 

- Requires additional processing at each hop 


TCF/SP 

- Reactive, throws away packets when the network gets 
congested 

- End-to-end, sliding window, 28Kb in many products 

- Can overflow intermediate systems 

- IP pacing responses flow as normal data 


(C) IBM Corporation 1 0*4 


Performance and Efficiency 


APPC/APPN 

- Requires session setup before data can flow 

- Can utilize up to 98% of link capacity 

- Excels at large data transfer 


TCP/IP 

- Includes address and makes routing decisions for each 
packet 

- Can utilize 40-80% of link capacity with Slow Start 

- Reduces memory requirements 


(C) IBM Corpcnttoi 1OT4 


Mbits/second 


Data Priority 


APPC/APPN 

- High, medium, low, and network 

- Determined by the APPC Mode used 

- Prevents batch traffic from affecting interactive 


TCP/iP 

- Little is defined 

- Not implemented consistently 


<C) IBM Corponricm 1 *04 


Vedacom's OS/2 Performance 
Results 


100Kb file transfer with confirmation 

te-T-—- 



o-H- 1 - 1 - 1 - r 1 

"T1" Routed "T1" Bridged 2 Ring Routed 2 Ring Bridged One Ring 


<C) IBM CajporaJort 1804 













Recovery From Errors 


Other Features 



APPC/APPN 

- Drops sessions when links or intermediate systems go 
down 

- If the application tries to restart the session, APPN will 
pick an alternate route 

- Non-disruptive rerouting is added in High Performance 
Routing (HPR) 


TCP/IP 

- TCP retransmits packets that aren't acknowledged 

- Routing tables are updated when failures occur 

- Application doesn't see recoverable failures 



APPC/APPN 

- Most cost-effective path to client/server for SNA 
customers 

- Syncpoint services 

- Security 


TCP/IP 

- Internet access 

- Included with many UNIX systems 

- Source code availability 


<C) IBM Cwporattan 1894 


(C) IBM Ckjrporatoi 1884 


Summary 


APPC/APPN: 

- Rich legacy of SNA applications 

- Easy to configure 

- Class of service routing and prioritization 

- Congestion avoidance; efficient use of network 
resources 

TCP/IP: 

- Rich legacy of university applications 

- Included in most UNIX systems 

- Internet access 

- Congestion detection; automatic rerouting around 
failures 


(C) <<m CoTporaljai 1694 











CS08 



Programming GP$«C 
Applications with 
Communications 
Manager/2 



APPC Market Enablement 
Research Triangle Park, NC 
appcmrkt@vnet.ibm.com 
Phone: (919) 254-4957 


Agenda 


- What isCPI-C? 

■ Environment Set up 

-- PDl P ^ol!c 

« U| IUWW I l“W OCAIlO LU 

- Start Conversations 

- Stop Conversations 

- Send Data 

- Receive Data 

- Confirmation Processing 


App:£; 


Ap 


; :r Common Programming Interface for 
Communications (CPI-C) 

a Standard set of CPI-C calls for every platform 

■ Same API for different languages 

-C, COBOL, REXX, ... 

■ CPI-C CODE AND SKILLS ARE PORTABLE! 

® Partner program can speak APPC or CPI-C 

■ Error and conversation status information are reported 
via parameters on each CPI-C call 


CPI-C CaSSs 


■ Format for all CPI-C calls 
CMxxxx(parm1 ,parm2,..rc) 

■ In C 

cmxxxx(parm1 ,parm2,..rc) 

» In COBOL 

CALL "CMXXXX" USING PARMI, PARM2,.. RC 

» CPI-C programming reference: SAA Common 
Programming Interface Communications 
Reference (SC26-4399) 


















Environment Set-up 


■ Need the CPI-C psuedonym files for C or COBOL 
* Need the CPI-C library for C or COBOL 

■ Need these for compiling and linking your programs 



CMCOBOL.CBL 
- In \CMLIB\CM_CBL directory 


CPICOBOL.LIB 

- In \CMLIB\CM_LIB directory 

- Include on LINK 


CPS-C Psuedonym Flies for C 

■ CMC.H 

- Sn \CMLIB\CM_H directory 

- Values for all calls and return codes 

■ CPIC.H 

- From GO APPC Forum on CompuServe 

- CMC.H with some C enhancements 

- CPIC.LIB 

- In \CMLIB\CMJ_IB directory 

- Include on LINK step 



Many applications can be written with just 6 calls 

■ CMINIT lnitialize_Conversation 

■ CMALLC Allocate 

■ CMACCP Accept_Conversation 
- CMSEND Send_Data 

■ CMRECV Receive 

■ CMDEAL Deallocate 

■ CMCFM Confirm 

■ CMCFMD Confirmed 











^ Starting a CPI-C Conversation 


Client 

■ Start the conversation 

- Initialize conversation (CMINIT) 

0 Set conversation characteristics 

— SET calls 

Set_Sync_Levei (CMSSL) 

■ Get a session 

- Allocate a session (CMALLC) 


mm i:r 


mm 


y CPI-C Conversation Initialization 

CMINIT(conversation id, 

symbolic destination name, 
return code) 

■ Accomplished with CMINIT call 

- Tells APPC to start a new conversation 

- Must be first call for a conversation 

- Set the conversation characteristics 

- CMiNIT 

- Input 

► symbolic destination name 

- Output 

► Conversation id 

► Return code 

& * ,C1 HN ° W I*® 1S * CT ' 1 m 


CMiNBT Input 


0 Symbolic Destination Name 

- Name of an entry in the local CPI-C side 
information table 

- Must be 8 characters padded with blanks 

- Must be NULL terminated in C 

- Can be all spaces, which tells CPI-C you will 
explicitly set the characteristics 

- COBOL - SYM-DEST-NAME PIC X(8). 

- C - unsigned char sym_dest_name[8 + 1]; 


: CMINIT Output 
■ Return code 

- Indicates if CMINIT worked 

- If not CM_OK, can not proceed with allocating 
the session for a conversation 

Possible Return Values: 

-CM_OK 

- CM_PRODUCT_SPECIFIC_ERROR 

- CM_PROGRAM_PARAMETER_CHECK 

► Unable to find entry in side information table 

- COBOL - CM-RETCODE PIC 9(9) COMP-4. 
-C - CMJNT32 cm_rc; 












■ Conversation SD 

- The tag for this conversation 

- Valid only if return code is CM_OK 

- Must be used for all subsequent calls 

- COBOL 

CONVERSATION-ID PIC X(8). 

- C 

unsigned char conversation_id[8]; 



CMINIT C Example 

#include <cpic.h> /* Or #include <cmc.h> V 

h In C 

memcpy(sym_dest_name, M TEST ",8); 
sym_dest_name[sizeof(sym_dest_name) -1] = '\0' 
strupr(sym_dest_name); /* not ANSI V 
cminit(conv_id, 

sym_dest_name, 

&cm_rc); 

if (cm_rc == CM_OK) { 

/* CMINIT worked 7 
} else { 


1* CMINIT failed 7 

} 



CMINIT COBOL Example 
COPY CMCOBOL. 

■ In COBOL 

MOVE 'TEST " TO SYM-DEST-NAME. 
CALL "CMINIT" USING CONVERSATION-ID 
SYM-DEST-NAME 
CM-RETCODE. 

IFCM-OK 
. (CMINIT worked) 

ELSE 

. (CMINIT failed) 

jfc (P B5M OoTKTofcn 1M4 


Symbolic Destination Table 


Symbolic 

Destination Partner Mode Server 

Name LU Name TP Name 













CM/2 CPI-C Side Information Example 

■ DEFSNE_CPIC_SIDEJNFO 

symbolic_destination_name(test) 

partner_lu_alias(LUY) 

mode(#INTER) 

tp_name(pgm1); 

■ Stored in Network Definition File (.NDF) 

« Also available via CM/2 panels 


<C) BW Owpsrdten 18« 


Set Sync Level - CMSSL 

CMSSL(conversation id, 
sync level, 
return code) 

■ This call is used to set the sync levei desired for a 
conversation 

■ Input 

- Conversation ID 
» Sync level 

a OUtpUt 

- Return code 




CPI-C Set Calls 

® Can be used to change the defaults 
■ Required if symbolic destination name of all blanks 
was used 

» Must be done after the CMINIT but before the 
CMALLC call 

» CPI-C set calls for session allocation 
—* CMSCT Set conversation type 

- CMSMN Set mode name 

OCD! K! Qp.f* ! ! j nnp 

VJIVlOl 1—1^ pci I LI l“l ||<3ilie» 

- CMSRC Set return control 

- CMSSL Set sync level 

- CMSTPN Set TP name 

- CMSCST Set conversation security 



CMSSL COBOL Example 


- In COBOL 

SET CM-CONFIRM TO TRUE. 

CALL "CMSSL" USING CONVERSATION-ID, 
SYNC-LEVEL, 
CM-RETCODE. 

IF CM-OK 
ELSE 







CMSSL C Example 


- In C 

CM_SYNC_LEVEL syncjevel = CM_CONFIRM; 
cmssl (convjd, 

&sync_level, 

&cm_rc); 

if (cm_rc == CM_OK){ 

} else { 

} 

(C} BN O«*tn#on 1S*S .A.?’# 


Allocating a Session 


CMAlLC(conversation id, 
return code) 

a Input 

- Conversation ID 

■ Output 

- Return code 


a Most difficult call to get working in your first APPC 
application 



Allocating a Session for a Conversation 

■ Accomplished with the CMALLC (allocate) call 

■ Establish a session with the partner LU 

- only LU level, not yet talking to partner application 
» Reserves local resources 

■ No application data flows, but session to partner 
platform is established 

■ Some conversation characteristics can not be 
changed after the allocate call 

- Conversation type 

- Mode 

- Security 

- Sync level 

it (CJ EBU Craptrofan 1 MM 


CMALLC Return Codes 

■ CM_OK 

- Call worked, but not yet talking to partner 
application 

» CM_PARAMETER_ERROR 

- Something in symbolic destination or set calls is 
incorrect (get sense data) 

- C M_A LLO C ATE_FA I LU R E_N 0_R ET R Y 

- Human intervention required 

■ CM_ALLOCATE_FAILURE_RETRY 
~ Retry the allocate command 

- Must perform CMINIT processing again 

’ r (C? CcrpcrvSa* 1 m A 

**■: * •*> 





CMALLC Examples 

■ In COBOL 

CALL "CMALLC" USING CONVERSATION-ID 
CM-RETCODE. 

IFCM-OK 

■ in G 


cmallc(conversation_id, 

&cm_rc); 

if (cm__rc == CM_OK) 



" cmaccp 

CMACCP(conversation id, 
return code) 

« Call has no input 

■ Output 

- Conversation id 

- Return code 

■ If return code is not CM_OK, no other CPI-C calls can 
be issued 



Accepting a Conversation 
with CPI-C 


» Accomplished with the CMACCP call 
« Server process Accepts the conversation 
a Must be the first CPI-C cal! in the server process 
« Accepts the conversation characteristics 


(C)nM Corparaton 16S4 

v >: 


CMACCP Example 


a In COBOL 

CALL "CMACCP" USING CONVERSATION-ID, 
CM-RETCODE. 

IFCM-OK 


» In C 

cmaccp(convJd, 

&cm_rc); 

if (cm_rc == CM_OK){ 










■ Conversation must be active before data can be 
sent 

■ Use the CMSEND call to pass a logical record to 
APPC 

- A non-blocking call (default) 

- Used to send any type of data to the partner 
program (request, reply, error message, etc) 

» APPC may defer actual transmission of the data 
to the partner for better network per iGrmance 


CMSEND Output Parameters 


■ Request to Send Received 

- Set if partner program has issued a Request to 
Send call (not usually used) 

b Return Code 

- CM_OK 

Call executed successfully LOCALLY (data may 
not have been sent to the partner yet) 

- CM_PROGRAM_ERROR_PURGING 

► Partner issued Send_Error call 


CPI-C Call to Send Data 


■ CMSEND (conversation id, 
data_buffer, 
sendjength, 

request_to_send_received, 

return_code) 

* Input 

- Conversation ID 

- Data buffer to send 

- Length of data buffer 


CMSEND Example 

* In C: 

cmsend (conversationjd, 
data_buffer, 

&sendjength, 

&request_to_send_received, 
&cm_rc); 

if ( cm_rc == CM__OK) { 


















In COBOL: 

CALL "CMSEND" USING CONVERSATION-ID, 
DATA-BUFFER, 

SEND-LENGTH, 

REQUEST-TO-SEND-RECEIVED, 

CM-RET-CODE. 

IF CM-OK 



CMRCV (conversation ID, 
data buffer, 
requested length, 
data received, 
received length, 
status received, 
request to send received, 
return code) 


The Receive call is the most complex CPI-C call 
a With the Receive call you 

- Receive a logical record from the partner 
program 

- Test to see if the: 

* Conversation is successful so far 

> Partner has deallocated successfully 
Partner has abended 

- Partner wants to report an error 
•» Partner has sent a data record 

> Partner has switched to Receive state 

> Partner has issued a confirmation or syncpoint 
request 



» Conversation ID 

- Conversation tag 

» Data buffer 

- Buffer to put received data into 

® Requested Length 

- Maximum length (bytes) to receive 








'v:vX- 


CMRCV Output Parameters 


w 

•• CMRCV Output Parameters (continued) 


■ Return code 

- OK, or Deallocated Normal 

“ If so, has data been received? 

■ Data Received 

- Only valid if return code indicates no error 

- Indicates whether data was received on this call 

* Received Length 

- Only valid if return code indicates no error AND data 
received is not CM__NO_DATA_RECEIVED 

- Length of data actually received on this call (bytes) 


■ Status Received 

- Indicates whether the partner has issued a call to 
change the state of the conversation 

■ Request To Send Received 

- Indicates whether partner has issued a Request to 
Send call 




mi r 



M 


CMRCV Example In C 


CMRCV Example in COBOL 


cmrcv (conversationJD, 
data_buffer, 
&requested_length, 
&data_received, 
&received_length, 
&status_received, 
&request_to_send_received, 
&cm_rc); 


CALL "CMRCV" USING CONVERSATION-ID 
DATA-BUFFER 
REQUESTED-LENGTH 
DATA-RECEIVED 
RECEIVED-LENGTH 
STATUS-RECEIVED 
REQUEST-TO-SEND-RECEIVED 
CM-RET-CODE. 





-«:*** Ending a Conversation 
With CPI-G 


■ Use Deallocate call (CMDEAL) 

■ Ends the conversation, conversation ID is no longer 
valid 

* Program must be in SENE) state to issue CMDEAL 
cal! 

■ Can be issued by either client or server 

■ Default deallocate type is the sync level used to 
allocate the conversation 


^Carport 1#*S 


"' f: ' Confirm - CMCFM 


CMCFM(conversationJd, 

request_to_send_received, 

return__code) 

« This call is used to request confirmation from the 
partner 

■ Useful for synchronizing remote processses 

■ Don't use unless you have a unit of work worth 
synchronizing 

■ This call is usually combined with a SEND DATA call 
for efficiency 


Deallocating the Conversation 


CMDEAL(conversation id, 
return code) 

* Input 

- Conversation id 

* Output 

- Return code 

* If return code is CM_OK, conversation has ended 


&&&&' (C) BM OarfxHoSan 1 AggSgtf 


Confirmed - CMCFMD 


CMCFMD (conversation id, 
return code) 

® Positive response to a CONFIRM request from parnter 

* Don't reply to confirm request until you have 
processed the data received successfully 

« Tells partner you have done what was asked 








APPC Market Enablement 


APPC Market Enablement 
Dept E42 / Bldg 502 
P.O. Box 12195 

Research Triangle Park, NC 27709 USA 

Internet: appcmrkt@vnet.ibm.com 

CompuServe: 76711,370 

Phone: 1-919-254-4957 

Fax: 1-919-254-6050 

Internet Anonymous FTP Site: networking.raleigh.ibm.com 
CompuServe Forum: GO APPC 


Mm 





le f. 


Leys troki 












♦set mf ans85 noosvs 
IDENTIFICATION DIVISION. 
PROGRAM-ID. HELLO. 


* HELLO.CBL "HELLO, WORLD" program; Sending side (HELL02.C) 


ENVIRONMENT DIVISION. 
DATA DIVISION. 

WORKINO-STORAGE SECTION. 


* CPI-C Copy Member 


COPY "CMCOBOL.CBL". 


* Working Storage Variables 


01 BUFFER PIC X (12) VALUE 'HELLO, WORLD*. 

LINKAGE SECTION. 

PROCEDURE DIVISION. 

MOVE "HELLOD" TO SYM-DEST-NAME. 


• CPI-C lnitialize_conversation call, supplying symbolic destination * 

* name and receiving return code from call. • 


CALL "CMINIT" USING CONVERSATION - ID 
SYM-DEST-NAME 
CM-RETCODE. 


$set mf ans85 noosvs 
IDENTIFICATION DIVISION. 
PROGRAM-ID. HELLOD. 


» HELLO.CBL "HELLO, WORLD" program; Accepting side (HELLOD.C) 


ENVIRONMENT DIVISION. 
DATA DIVISION. 

WORKING-STORAGE SECTION. 


* CPI-C Copy Member 


COPY "CMCOBOL.CPY*. 


* Working Storage Variables. 


01 BUFFER PIC X(100) VALUE SPACES. 

LINKAGE SECTION. 

PROCEDURE DIVISION. 


* CPI-C Accpet_Conversation supplying conversation id and receiving* 

* return code from call. • 


CALL "CMACCP" USING CONVERSATION-ID 
CM-RETCODE. 


* CPI-C Set Sync Level call, supplying sync level to be set and 

* receiving return code from call. * 


SET CM-CONFIRM TO TRUE. 

CALL 1 CMESL 1 USING CONVERSATION-ID 
SYNC-LEVEL 
CM-RETCODE. 


* CPI-C Allocate call, rell, supplying conversation ID and 

* receiving return code from call. * 


CALL *CMALLC" USING CONVERSATION-ID 
CM-RETCODE. 


CPI-C Send_Data call, supplying buffer to send data frem, length 
of data to send, and receiving requeat_to_send_received (ignored) 
and return code frem call. * 


MOVE 12 TO SEND-LENGTH. 

CALL "CMSEND" USING CONVERSATION-ID 
BUFFER 
SEND-LENUTH 

Rf QUEST-TO-SEND-RECEIVED 
CM-RETCODE. 


• CPI-C Deallocate call, supplying conversation id and receiving 

* return code fran call. * 


CALL "CMDEAL" USING CONVERSATION-ID 
CM-RETCODE. 

STOP RUN. 


* CPI-C Receive supplying where to put received data, maximum 
» length to receive and returning length of data received, 

* status_received value, Request_to_send_Received (ignore this) 

* and return code. 


MOVE 100 TO REQUESTED - LENGTH. 

CALL 'CMRCV' USING CONVERSATION-ID 
BUFFER 

REQUESTED-LENGTH 

DATA-RECEIVED 

RECEIVED-LENGTH 

STATUS-RECEIVED 

REQUEST- TO - SEND - RECEIVED 

CM-RETCODE. 


* This the data received frem HELLO 


DISPLAY "DATA RECEIVED: ■ BUFFER. 


* CPI-C Confirmed, supplying conversation ID and receiving return 

* code from call. 


CALL "CMCFMD" USING CONVERSATION-ID 
CM-RETCODE. 


STOP RUN. 




































60SD 


Agenda 



Selecting a 

CommunidHllp : 

API 



Mel Jones 

IBM APPC Market Enablement 
Internet: meljones@vnet.ibm.com 
Vnet: jones at ralvmG 
919-254-4363 


- Advantages, disadvantages and uses of: 

- Remote Procedure Calls 

- Message Queues 
— Conversations 

« How do you decide which to use 
a Application design scenarios 



▼ The Ideal Interface ^ Networking Blueprint 

■ The ideal high-level interface would provide 

- Common interfaces for all languages 

- Network independence 

- Local/remote transparency 

- Automatic data conversion 

- Two-way simultaneous (full duplex) as well as two-way 
alternating (half duplex) data flows 

- Centralized security service and directory service 

- Syncpoint services 

- Excellent performance 

- Easy to program 

® The ideal high-level interface would support 

- Partners executing on different platforms 

- Servicing multiple clients from a single server process 

Ippr jppif jppgr JiPPif 































Networking 


Three Communication Styles 


Using Remote Procedure Calls 


Conversational Remote Procedure Call Messaging and Queueing 




■ Remote procedure calls let your program call a 
subroutine that can be in a different computer 

■ RPC "stubs" exist on client and server to handle calls 

■ The RPC software gathers parameters, supplied by 
invoker, and delivers them to requested procedure 


AjivSS-ft:?':" (CJ Corporation 193$ 


RPC Advantages and Disadvantages 


RPC and the Ideal Interface 


Advantages 

- No communication calls are needed in programs 

- Natural extension of programmer's existing skills 

- Protocol and network independent 

Disadvantages 

- The program is blocked during call processing 

- All the data must be prepared before the call is issued 

- The program cannot detect network failures 

- Multiple subroutines require a calling tree 

- Complicated programming may be required to build and 
administrate subroutine stubs 

- The program cannot change its server without using 
complicated verbs to manage names and bindings 


Requirements met: 
x Common interfaces 
+ Network independence 
+ Local/remote transparency 
+ Automatic data conversion 

* Full and half duplex 

* Security and directory service 

- Syncpoint services 

- Excellent performance 
+ Easy to program 
+ Partners on different platforms 

- Service multiple clients from a single server process 


k won t have 
❖ meets 
- doesn't meet 


m 


W-s-'-y. 



(CJ SSA Cwperaion IBM 


M 





















m Moccano rsiic»iic»Q lot \/nur nrnnram s<^nH mfissanfis in 

— Hiuwuuyu V|W»WV/W .Wl v..., <-- .— ...-O- 

a queue serviced by a partner 

■ Queue Manager software manages messages and 
performs delivery function 

■ Asynchronous Processing 

- Write messages to outbound queue(s) 

- Read messages from input queue 

Jt <c) taw consoraMan i dm A. jiT 


and the ideal interface 

Requirements met: 

- Common interfaces 
+ Network independence 
+ Local/remote transparency 

- Automatic data conversion 
x Full and half duplex 

- Security and directory service 

- Syncpoint services 
+ Excellent performance 
+ Easy to program 
+ Partners on different platforms 
+ Service multiple clients from a single server process 



- Advantages 
~ Verbs are simple 

- Utilizes network resources efficiently 

» Allows flexible application server distribution 

- Allows for good processing overlap 

- No calling tree built to return data to client 

■ Disadvantages 

- The program must correlate requests and replies 

- The program must use timeouts to detect partner outages 

- The programs must synchronize with messages 



* Programs use conversations to communicate 


b Application data and conversation status are 
exchanged over a conversation 


Programs communicate as peers 























Conversations 

Advantages and Disadvantages 


* Advantages 

- Flexible message exchange sequence 

- Good processing overlap 

- Synchronization under program control 

- Related records are automatically correlated by the 
conversation 

- Easy to select partner 

- Programs are aware of network status and partner status 

» Disadvantages 

- Many calls and alternatives can complicate the 
programming job 

- Multiple co-routines require a conversation tree 



^ Choosing an API 

■ Driven by application requirements 

- Processing requirements 

- Response time 

- Network and data volumes 

■ Don't get trapped by 

- current in-house expertise 

- current application base 

■ Consider the restrictions which exist for each API 

■ No API meets every requirement for every application 



Conversations and the ideal interface 


Requirements met: 

+ Common interfaces 
+ Network independence 
+ Local/remote transparency 
+ Automatic data conversion 

- Full and half duplex 

- Security and directory service 
+ Syncpoint services 
+ Excellent performance 

- Easy to program 
+ Partners on different platforms 
+ Service multiple clients from a single server process 



P) F0M Corporator! 1SM 

JL S-fjw.y 

■*%< V "V 




r Travel Agency Application 

■ What is the travel agency application? 

- Make airline, inter-airline, hotel and car reservations for 
clients 

- Verify credit card purchases 

- Provide itinerary to client 

■ Application requirements 

- Communicate with external systems 

- Update local databases 

■ Application processing 

- Local agency records all travel information 

- Travel information sent to specific organizations i.e., airline, 
hotel and car rental for processing 

AW: 1 # 1 * P) EM Corporator! 1 EM i :vXjv*v 


* won t have 

- meets 

- doesn't meet 
























Which APS for Travel! Agency? 


Order Entry Application 


- Using RPC for travel agency 

- Blocicing would bo a problem 

- Configuration maintenance for external systems 

* Using Conversations for travel agency 

— No guarantee all reservation systems will be available 

- Resource requirements may be excessive for many 
concurrent conversations 

Ill'Ll sing MQ for travel agency 

- Good for time-independent processing 

- Good for external system connections 


■ What is Order Entry? 

- Mission critical application for accepting orders 

- A client/server application to achieve maximum usability 
and performance 

- Used nationally 

* Application requirements 

— Communicate with local and remote processes 

- Update local and remote databases 

- Response time is critical 

■ Application processing 

- Workstation obtains order information and performs local 
validations 

- Host applications performs validations, stores orders and 
generates order number 


|(cgEMCwporaaorisw 


mm 


(C) BM CorpirSIWl 1S84 


Which APS for Order Entry? 


- Using RPC for order entry 

“ Databases located on the mainframe 

- Network status information unavailable 

■ Using MQ for order entry 

- Application would have to coordinate requests and 
responses 

- Unpredictable response time or order processing 

ggfUsing Conversations for order entry 

- Provides needed communication status information 

- Meets response time requirements 


^ Summary 


■ There are a number of competitive interfaces for building 
distributed applications, with no universal winner 

■ The application requirements will drive your network API 
choices 

* Application requirements will change, your network 
interface must be able to react 

■ Choose wisely, changing your mind can ruin a lot of 
weekends 

- Remember, RPC and MQ applications will work on an 
APPC conversation 

















CB10: Usim f AfflU Satte 
Features am 
GmsldemtSoiisS? 


David T. Lutz 
||| IBM Corporation 
III APPC Market Enablement 
HH Internet: davejute@vnet.tom.com 
■ IBMMall: USIB5N27 at IBMMAIL 
Phone: (919) 254-4-166 




Basic Features and Design Considerations 


a Fundamental design decisions 

- Allocating and deallocating conversations 

- Sending and receiving data 

- Reporting errors 

- Synchronizing programs 

b Factors used to make the decisions 

b Program logic that is affected 

- Local program 

- Partner program 


tm 




APPC Conversation Terms 


■ Transaction 

a Conversation 

■ Short conversation 


T ransaction 



Long conversation 


Transaction: An exchange of information 
that accomplishes a particular action or result 







Conversation 



■ Conversation: A logical connection used by two 
programs to exchange information 


Short and Long Conversations 

■ Short Conversation 

• One transaction per conversation 



« Long Conversation 

» One or more transactions per conversation 



Preparing for Conversations 


Conversation Lifetime 


Eahy design decisions smooth APPC application development 

Decisions about the relationship between the application and its conversations 

- How long should a conversation be? 

- How wiH the application data be organized into logical records? 

- What application program interface (API) should be used? 


Decisions about the APPC features 

- What type of APPC conversation should be used? 

- Should session security be recommended? 

- Will the conversation security feature be used? 

- Will the synchronization feature be used? 


a Use short conversations when 

- The overhead ol starling and slopping conversations is less 
significant than the ability to share network resources 

- The transactions can be processed independently 

■ Use long conversations when 

- The overhead of starling and stopping conversations is more 
significant than the ability to share network resources 

- The transactions depend on each other 















■ Conversations exchange logical records 

■ A logical record may contain any binary value 

■ A logical record may be of any length from 0 to some 
platform specific maximum (327(57 for CPI-C) 


■ Build one application record into on® logical record 

. Build multiple application records into one logical record 

■ Split a single application record into multiple logical records 



^ 1 Application Record = 1 Logical Record 


Many Application Records = 1 Logical 
Record 



S@neL.Data SencLPata 


a Build multiple application records into one logical record when 
a The caH overhead must be minimized AND 

Build one application record into one logical record when , You can tolerate the logic needed to combine and delimit the application 

- The call overhead can be tolerated records 



















'*$8? ^ Application Records = Many Logical 
'■ Record 



SencLJData SencLData 


Splil a single application record into multiple logical records when 
■ The record fields are scattered all over memory AND 
" The overhead of moving the data to build a logical record is greater than the 
call overhead 



v Choosing a Conversation Type 


a APPC platforms offer Mapped and Basic 
conversations. 

® We recommend Mapped conversations 

- Exchange arbitrary data records in data formats that have 
been prearranged between application developers 

a Basic conversations have the following capabilities: 

- Multiple logical records in a single buffer 

- A small performance advantage 

- Other, more obscure functions 



Allocating a Session 


■ The allocating program must provide 

- TP name: Name of the partner program 

- LU name: The location of the partner program 

- Mode name: The network services required 

- Sync_Level and Security parameter values 

- Defaults for all other parameters 
a The receiving program must 

- Be defined with a matching TP name, conversation type, 
security, and synchronization level 

- Accept the conversation 

► Explicitly using an Accept_Conversatlon call 
- Implicitly (some platforms have a default conversation) 



■' LU's, Modes, and TP's Oh My! 









* APPC Synchronization Tools 


By synchronizing, you know that the partner has 
successfully processed ail the data sent so far. 

b Use Allocate sync_lev©ll(Non®) 

- to synchronize implicitly by exchanging data 

» Use Allocate syncJevel(Confirm) 

-to synchronize programs without sending an extra logical 
record 

b Use Allocate syncJevei(Syncpt) 

- to modify data using two-phase commits 



Sea 


b Security is required to protect sensitive resources 

- From an attacker pretending to be a valid user 

- To ensure only authorized users have access 

b Security is implemented with two tests(in order) 

1. Authentication 

► Is this user who he claims to be? 

► Does he know the secret password? 

2. Authorization 

► Is this user authorized to perform the function? 

► Is the user's ID in a list of authorized users? 

■ Security services are provided by some platforms to 
assist applications 



APPC Security Tools 


b Security problems 

- An attacker’s computer may attempt to gain access to your 
network or server 

* Use APPC session security 

- An attacker may gain access to a valid computer and 
masquerade as a valid user 

★ Use APPC conversation security 

a Security services incur overhead of password 
administration 

- LU-to-LU passwords 

- User ID passwords 


Conversation Security of SAIMIE 



a APPC will get signed-on user at conversation allocation time 



















Sending Data 


'** Receiving Data 


® Use Send_Data to send a logical record 


■ Before using Send_Data, the program must have 
permission to send 

- After using Allocate successfully 

- After using Send_Data successfully 

- After using Send_Error successfully 

- After using a successful receive operation where 
permission to send was in the status indicators 

■ The sending program must 

- Build a logical record 

- Issue the call and process the return code 


■ Receive 

- When necessary, gives ihe partner program permission lo send 

- When necessary, suspends (i.e., blocks) caller lo wait tor data 
- A program must receive data when it has: 

- Given the partner permission to send 

- Received a Prog_Error_Purging return code on a previous call 

- Received data successfully wilh no change in status 

- Accepted a conversaton 

■ To receive, a program must 

- Issue the call and process the return code, data received, and the 
relumed status 

a The partner program must 

- Recognize lhal it has permission to send 


mm 


mm 


mm 


mm 


X:: Synchronizing 


Conversation Failures 


Only the program with permission to send can request 
synchronization. 

- Use Confirm at the end of a transaction in a long conversation 

- Use Deallocate type(Sync_Level) at the end of a transaction in a 
short conversation (conditional conversation) 

The program must 

- Recognize that it is time to synchronize 

- Issue the correct call 
The partner program must 

- Watch the status indicators while receiving 

- Process all data that was received so far 

- If processed successfully, send the Confirmed call 
*■ Otherwise, report an error 


» Regardess of synchronization techniques 

- If the conversation fails, the program cannot tell it 

► The partner did not receive the synchronization request and 
abandoned the transaction 

► The partner received the synchronization request, processed 
everything successfully, but the confirmation was lost 

■ If the transaction does not modify anything, just repeal the transaction 
that failed 

■ If Hie transaction modified something, protect against unwanted 
duplicates through 

- Human intervention 

- Application backout and recovery through the use of audt trails 

- Use ol syncpoini services 







ig Errors 


Deallocating a Conversation 


Report an error with Send_Errar when 

- The program cannot build the next logical record to be sent 

- The program cannot process the last logical record received 
The program must 

- Recognize the error and issue the call 

- Always follow up by sending a record that describes the error 

- Recover as required 
The partner program must 

_ Look for P rog_E r ro r_N o_T rime and Prog_Error_Purglng 
return codes 

- Receive the logical record that describes the error 

- Recover as required 



The Starter Set 

In most circumstances, these calls are enough 


APPC 

CPi-C 

Allocate 

CMINiT 

Receive_AI locate 

CMALLC 

SendLData 

CMACCP 

Recei ve_a n d_Wn it 

CMSEND 

Deallocate 

CMRCV 

Confirm 

CMDEAL 

Confirmed 

cmm 

SendJError 

CMCFMD 

CMSERR 


« Use the following types of Deallocate 

- Flush to end the conversation normally and 
unconditionally 

_ SyncJLevel when synchronization is required 
_ Abend when an error proves to be unrecoverable 

■ The partner program must 

- Watch the return code fields for 

► Deallocale_Normal 

► Dealiocate__AbBnd 



Simplifying Assumptions 


. Use CPI-C 

■ Use Short conversations 

■ Design one application record for one logical record 

■ Use Mapped conversations 

■ Give the session security choice to the users 

■ Use Allocate security(Same) 

- Use Allocate syncJevel(Confirm) 

. Use Deallocate type{Sync_Levei) 








Bmpmving Performance 



Using APPC: Performance 
and Security FmMms 



APPC Market Enablement 
IBM Networking Systems 
Research Triangle Park, North Carolina 
919 - 254-4957 

appears rkt at ralfomi® 


27709-2195 


» Special calls and parameters can optimize an application's 
performance 

■ These calls affect 

- Amount of processing overlap between two programs 

- Network overhead 

- Call overhead 

- Storage overhead for receive buffers 

- A programmer must know 

- When the special call or parameter is beneficial 

- How the local program's logic is affected 

- How the remote program’s logic is affected 


mm 



^igf 

Understanding Processing Overlap 


improving Processing Overlap: Flush _ 



, ra on cwjwmton iw 


■ Use Flush when 

- There is a significant delay before sending next record AND 

- There is an advantage in processing overlap AND 

- The advantage outweighs the extra call and network 
overhead 

a Design the program to know when Fflush is 
advantageous 

» Flush is transparent to the partner program 




CS11 







W Improving Processing Overlap: 
Prepare To Receive 



■ Use Prepare_To_Recesve type(Flush) when 

" Sending program wants to give permission to send AND 

- There is a delay before sending program is ready to receive 
AND 

" There is an advantage in processing overlap AND 
“ The advantage is greater that the disadvantage of the call 
overhead 

Design sending program to know when 
Pr@pare_T©_Receiv@ is advantageous 

■ Prepare_To_Receive type (Flush) is transparent to 
the receiving program 



■ Use Prepare_To__R©ceive typ©(Confirm) when 

" You want to synchronize and give the receiving program 
permission to send AND 

“ There is a significant delay before the sending program is 
ready to receive AND 

“ There is an advantage in processing overlap AND 

- The advantage is greater than the disadvantage of the call 
overhead 

» Design the sending program to know when Prepar©_To_Receiv© 
is advantageous 

■ Receiving program must 

- Recognize the Confirm_Send status 

- Perform the confirmation processing 

- If successful, remember it has permission to send 



.. Combining Send Data with Other Functions 


Using Combined Indicators 


Combining calls improves performance 

■ Send_Data can be combined with 

- Flush 

- Confirm 

» Prepare_To_Receiv© type(Fiush) 

- Prepare_To_Receive type(Sync_level) 

- Deallocate type(Flush) 

- Deallocate type(Sync_Level) 

- Deallocate type{Abend) 

■ Sending program must know what happens after 
Send_Data 

■ Combined junctions are transparent to receiving 
program 



Combined indicators improve performance 

■ CPI-C always attempts to return combined indicators 

■ Valid status combinations used while receiving are 

Data indi cat ors Status Indicators 


- Data_Complete 

and 

Deallocat@_Normal 

- Data_Com piste 

and 

Send 

- Data_Complete 

and 

Confirm 

- Data_Compiete 

and 

Confirm_Send 

-■ Data_Complete 

and 

Confirm_Deallocate 


■ Receiving program must contain special logic 

■ Combined indicators are transparent to the sending program 










-■'Coding the Logic for 
Combined indicators 


* Process the indicators in the correct order 

1. Return code OK or Dealloceite_Normal 

Check data indicators and process the data 

2. Return code OK 

Check the Status Indicators 
First check for a confirmation request 
Then check for permission to send 
Finally check for conversation deallocation 

3. Otherwise, the indicators have no meaning and the 
return code must be analyzed 

« Don’t assume data and status are always combined 



■ Use Confirm to take intermediate checkpoints 

- Reduces the time it takes to recover from a failure 

- Increases the delay for each transaction 

■ Sending program must use Confirm at a checkpoint interval 

- if Confirm returns OK 

► Advance recovery parameters 

► Purge intermediate results 

- If Confirm does not return OK 

► Return to the last known recovery point 

► Retry the transaction 

- Receiving program must 

-Watch for the Confirm status indicator while receiving 

- Process the data received thus far 

► II successful, record recovery parameters and issue Confirmed 

► Otherwise, report an error 



f Receiving Less than a Complete Logical 
Record_ . 



■ Receive less than a complete logical record when 

- It is impossible or too expensive to allocate a buffer large 
enough to hold the largest possible logical record 

- The advantage in reduced memory overhead is greater than 
the disadvantage of the call overhead 

h The receiving program must 

- Recognize the Datajncomplete data indicator 

- Perform extra receive operations when necessary 

- Process a logical record that is received in pieces 

■ The sending program cannot tell that the logical record is 
received in pieces 


■ Most performance changes can be made without the 
partner knowing 

■ Processing overlap can be improved 

■ Performance can be improved by 

- Combining functions with SsndJData 

- Receiving combined indicators 

■ Mid-transaction check points can reduce recovery time 
but the tradeoff is extra delay in total processing time 

■ A logical record may be received in small pieces 

- Reduced storage 

- Extra receive calls 









Using APPC Security Tools, part 1 


Using APPC Security Tools, part 2 


It you rely on physical security, don't bother with 
anything else 

Use session security when 

- There is sensitive data or sensitive procedures to protect AND 

- The links between systems are not adequately protected AND 

" The user can tolerate the overhead of password administration AND 

- The configuration files that contain the passwords are adequately 

protected ’’ 


Use conversation security when 

- All users are not given access to everything OR 

- Attackers may gain access to a valid system AND 

- The user can tolerate the overhead of password administration 

Use additional security measures in your application 

when 

- You need session and conversation security, but the APPC services 
are inadequate 

- You need to protect sensitive information from attackers who can 
capture a link trace 

- You need to protect against attackers who capture records, modify 
them, and then send them on 




C) BU CwpMssfen 1«M 


mm 


mm 




APPC Conversation Security 


APPC Conversation Security 


Chosen when the SECURITY parameter is on the ALLOCATE 
verb 

Use Sacurity(Same) when 

- Both the source and target systems have security services 
that authenticate users 

- Both systems support the "already verified" option set, and 
the target system can safely trust the source system 

- Both systems support "persistent verification" 

Use S©€urity(Sam@) whenever possible to take advantage of 
enhancements to conversation security 


Use Security(PGM ...) and provide a user ID and password in 
application when 

- The source system does not have security services, but the 
target system does 

- Your program can obtain a user ID and password 

- You can tolerate the exposure of the password on the link 

- You can tolerate the overhead of the security check that the 
target will perform for every new conversation 

Use Security (No no) and exchange the user ID and password in 
the data when the APPC conversation security is inadequate 










CS12: APPC Semrity for 
ApplScationl^^^mBts 



APPC Market Enablement 
IBM Networking Systems 
Research Triangle Park, NC 
appcmrkt@vnet.ibm.com 
919-254-4957 


Agenda 


■ Route security 

a Session security 
s Conversation security types 

_ DiiilrJinrt oorM iritw into v/m ir a nnJi nation 

- uunumy ^vumj " r ,, ~ , ■ 

■ Cascaded servers 


mm 


(CJ EM Corporatei IBM 


asm 


Route Security 


■ Selection of a secure route through the network 
> Application can control route selection through mode 
name choice: 

- APPN secure modes: 

- #1NTERSC 
> #BATCHSC 

- Mode parameters control compression and encryption — 
need to be configured 

« May involve automatic encryption of data on the 
session 


Session Security 


» Does not require changes to applications 
a Assures that your computer is talking to a valid partner 
computer 

* Enables conversation security mechanisms that count 
on "trusting" the partner computer 
» Passwords are protected 






mm 


mm 


(CJ EM Corporator! 1904 


(C) IBM Ccrperetton 1994 













Conversation Security Types 


Security SAME Mechanisms 


- NONE 

- No security information is sent 

«PROGRAM 

- Program supplies a user ID and password that are sent in 
the Attach in the clear 

“ Program usually prompts user for these values 

- SAME 

- APPC automatically transfers local user information in the 
Attach 

- A number of mechanisms exist 

- User ID must exist on the target system for proper 
authorization 


■ Already Verified (AV) 

- Requires that server computer "trust" the client computer to 
verify user's identity 

- User ID is sent with an already-verified indicator 

- No password is exposed 

■ Persistent Verification (PV) 

- User ID and password are sent on first Attach only 

- Subsequent Attaches contain only the user ID 

■ Enhanced Security SAME 

- User ID and password are sent in every Attach 

- Avoids user intervention 


mm 


k 


mm 


M 


Security SAME May Revoke User ID 


Problems with Each Security Type 


Persistent verification and enhanced security SAME 
will send a user ID and password 
Treated like any other logon attempt 
Repeated failures may result in revocation of user ID 
Client program can't tell PV or enhance security 
SAME was used 


- SAME 

- Already verified should only be used if session security has 
been configured 

- Fails if user ID does not match 

- PV and Enhanced SAME fail if password does not also 
match 

- User ID revocation 

- NONE 

- Most transaction programs require security 

- User ID may be required to start server pgm. 

- PROGRAM 

- Exposes password in the clear 

- Requires user intervention (or configuration) 


mm 


mm 


mm 


As 


<qefclCorpo<«Jcn1SM 


(q taw Ccrporatksn 1 MM 















Programming Considerations 


‘ :r GP1-C 1.2 Security Calls 


Choosing one security type to use is not sufficient 
Security choice is determined by installers and users 
Programs need to be capable of using ail security 
types 

Platform support for security SAME will improve in the 
future 


Set_Conversation_Security_Type (CMSCST) 

- CM_SECURITY_SAME (default) 

- CM_SECURITY_NONE 

- CM_SECURITY_PROGRAM 

Set_Conversation_Security_User_ID (CMSCSU) 

Set_Conversation_Security__Password (CMSCSP) 
Product specific extension versions also exist 

- Replace CM with XC 

- Available on VM, OS/2 CM/2, AIX 







(CJBM&ypcnatonlHM 



" ::r Three Security (Methods: Overview 


Method 1: Letting Users Tell You What To 
Use 


■ For example, command line flags: 

(default) use security SAME 
-n use security NONE 

-uUSERJD -pPASSWORD 

h Letting users tell you what to use use security PROGRAM 

a Avoiding user interaction until last possible option m y\/ 0 rks well in automated environments (never needs 

» Prompting users for what they want to use to prompt for information) 

■ User must be aware of security type options and when 
to use each 

a Example: APING 




••• w 


(CJ BSM Corparattcn 1994 


(Cj IBM Corporation IBM 









• w Method 2: Avoiding User Interaction Until 
w Last Possible Option 


■ Try security types in the following order: 

1) SAME 

2) NONE 

3) PROGRAM, after prompting for values 

■ When possible, connection is established without user 
intervention 

® User does not need to know about security options 

■ NONE may be used, yet user ID authorizations 
required for successful execution of the program 

■ Example: ATELNET 


<9 BM Corjx«tton 1 jl 


Cascaded Servers 



■ Useful when needed resource is not on 
the computer the client is connected to 

■ Intermediate server Allocates to database 
server to complete client’s request 

■ Security SAME says, "Use security 
information that the client provided." 



<C) raw 1M4 


Method 3: Prompting users for what they 
want to use 


■ Prompt for user ID. If response is: 

(nothing) Security SAME. If fails, try 

NONE. 

"anonymous" Security NONE. 

any string Prompt for password and use 

security PROGRAM 

■ User does not need to become a security expert 

■ Security NONE is hidden behind the often familiar 
concept of anonymous login 

a User interaction is always required 
» Example: AFTP 



Summary 


■ Use mode names to select route security 

■ Advise installers to configure session security 
appropriately 

a Select and utilize different conversation security types 
depending upon user/installer requirements 

■ Design applications to utilize an appropriate security 
methodology 





(C) BM COTKSttkWl 19M 


















CS13: Cm§g«ati§ 
APPUAPPMm.m*- 
Workstation *l§r 


APPC Market Enabtemont 
IBM Networking Systems 
Research Triangle Park, NC USA 
1-(919)-254-4957 
appcmrkt@vnet.bm.com 


Agenda 


a NN/EN/LEN configuration considerations 
a Naming conventions 

a Sample configurations for CM/2, Networking 
Services/DOS, AIX SNA Server/6000 


mm 


Elements of configuration 


^ A PPM node types 


■ Configuration elements 

- Local LU (Control Point) 

» Partner LUs 

- Links 

- Connection networks 

- Modes 

- Class of service 

- Transaction programs 

- CPI-C side information 

■ Most are not needed when using APPN 
« In general, LESS IS BETTER!! 


a Low entry networking node (LEN) 

- Peer connections 

- Network endpoint 

■ End node (EN) 

- LEN + 

- Registers LU names it owns with NN 

■ Network node (NN) 

- EN + 

- Provides network services to LENs and ENs 

- Resource Registration 
* Directory services 

► Topology and route selection services 

- Intermediate session routing 




CS13 






















APPM reduces configuration 


Evolution of Link Configuration 


Network Node End Node LEN Node 


LU Name LU Name 

NN Server 


ENA 



a 

ENB 


LU Name 
Ail Partners 
All Modes 


#m 


o 


Before APPN, SNA definition was complicated 

- Link information required for EVERY partner 

APPN has reduced the required definition 

- End Nodes only need address of a Network Node 

- Network Nodes need addresses of other NNs 


Discovery makes it even simpler for LANs 

- ENs and NNs need NO link definitions for APPN 
service! 

- Low Entry Networking nodes need NO NN link 
definitions! 


m€ 




* Discovery is... 


Connection network 


Dynamic LAN Address Resolution 

Provides a mechanism tor finding nodes on a LAN 

- Determines LAN addresses of remote nodes 

- Finds nodes based on routing capabilities and group 
memberships 

Allows ENs and LENs to dynamically discover the 
network node address 


Allows APPN nodes to communicate directly, without 
having sessions routed through a network node 
Eliminates link definition to partners on LANs 
Use one connection network per LAN 
LENs cannot participate 


ENA 

n nn 



Beta code available on CompuServe 


EN B 










w 


Network node design 


End node design 


Each network node 

- Should have links to two other network nodes to ensure 
availability 

- For LANs without Discovery, use locally administered 
addresses to avoid reconfiguration 

Remember maximum links per adapter in network 
node restricts number of end nodes it can support 


Each End Node 

- Must know the address of its Network Node 

- May have a backup Network Node 

- May have connection network definition for performance 
Discovery will simplify link definition 




mm 




me 


^ Naming conventions 


NETID.LUNAME 


■ Fully-qualified LU names are 8.8 

■ Use FQ LU names that are unique 

■ Register network IDs 

► IBMer runs SNAREGISTRY a|^>licatk>n on HONE 

■ Use central administration 

■ Minimize the number of independent LUs per 
workstation 




Network Example 


NN 











Configuration methods for CM/2 


CM/2 network node configuration 


■ Panels 

- Easier the first time 

- Syntax always correct 

- Security information must be entered via panels 

- Can become time consuming 

« Text file (.NDF file) 

- Easier to duplicate 

- Easier to view entire configuration 

- Easier to debug problems 

- Easier to make mistakes 

- Use template file provided by CM/2 


DBPINR_LOCAL_CP 

PQ_CP_NAME 

CP_JU,IAS 

nous, .type 


(USIBMNR. NRR5 0AFD) 
(MYLU) 

(NN) | 


DEPINE_CONNECTION_NETVfORK 


(USIBMNR. CNNET01) 
(DLC_NAME (IBMTRNET) 
ADAPTBRJIUMBER (0) ) ; 


DBPINBJLOGI CAL_LI NK 

LINK_NAME (NETN 

DLC_NAME (IBMT 

ADAPTER_NUMBER (0) 

DESTINATION_JU)DRESS (X'SO 

AC^']VA'rj<_A':_HTAR , '' 0 :- (YHC) 

cf_c:-_n*:osion_xot'P»st (rc<.vi 


CM/2 network node configuration 
(continued) 


CM/2 end node configuration 


DBFIREJ-OCICAI^LINK /♦ LlnX to 2nd 

LINK_NAHB (NBTN0DB2) /« 

DLC_NAME (IBMTRNET) /« 

ADAPTBIUNUMBBR (0) /« 

DESTINATIOK_ADDRESS (X 1 60000C730200 1 ) /* Addross Of | 

ACTIVATB_AT_STARTUP (YES) /* 

CP_CP_SESSIOH_SUPPORT (YES) ; /* APPN Connoci 

DBPINE_DEPAULTS /• Dofino D«£ai 

IMPLICIT.ZNBOUHD.^LU.JSiTFPCaT (YES) '« A*JOld FLU ct 

DBPAULT_MODE_NAME (((INTER) /* 

DIRBCTORY_FORJNBOUNDJITTACHBS (C. \APPCTPS) /• Auto-Rosolv< 
DEFAULTJTP_PROCRAK_TYPE (FULL_SCREBN) /« 

DBFAULT_JTP_OPBRATION (NONQUEUED_AM_STARTED) ; /* 

START_ATTACH_MANAGER: /« 


/* Saiiplo Nodo Dofinition Filo for End Nodo 

DEFINEJAJCAI^CP /* Dof ln« 

PQ_CP_NAME (USIBMNR. NRR51AFD) /• 

CP_ALIAS (MYLU) /♦ Samo I 

NODK.CYP^ (BN); /* EK or 

DEFINE_CONNBCTION_NETWORK /* Connor 

PQ_CRENAME (USIBMNR. CNNET01) /* 

ADAPTERS NFO (DLC_NAME (IBMTRNET) /« 

ADAPTER^NUMBER (0));/* 

DEFINE_LOGICAL_LI NK /* LlnK t 

LINK_NAME (SERVER ) /* 

DLC_NAME (IBMTRNET) /• 

ADAPTBR^NUMBBR (0) /• 

DESTINATION^ADDRESS (X•60000C730100 1 ) /• Addros 

ACTIVATE_ATUXVADTtTP (YEA) /* 

cp_.':p_£*R>io:ci^_j>t:r:<wr (yss). /- appn r 



CM/2 end node configuration (continued) 


Pre-VTAM 4.1 subarea scenarios 


DEFINK_DEPAULTS 

IMPLICIT_INB01TND_PLU_SUPP0RT <YBS) 

DIRBCTORY_pOR_INBOUND_ATTACHES ( >) 
DEPAULT_HODR_NAMB (IIWSRl 

DEFAULT_TP_PROGRAM_TYPE (FULL_JJCKBENi 

DEFAULT_TP_OPERATI ON (NONQVEirED_J'Jl__SrA*TEl)) 


/♦ Define Defaults */ 

/♦ Avoid PLU conflg. */ 

/* V 

/• 

;/«How should TP a tart?*/ 


/* This CM provldod TP allows ramota Display of APPC configuration 
U5FI!TEl_Tr /* TP DofiEtJiai 

TP..HAMS (RJMPSRVU) 

FILFSPBC (C\CMLrP.\DS?aEVR\IinsP4.R'ri2.fara) ; /* 


START_>TTACH_HANACER; 


Local (LAN Attached) host: 

Define wildcard at each end node 



Remote (Modem Attached) host: 

Define wildcard at network node 



CM/2 ~> host LEN Example 


Wildcards 


DEFINRJXXaCAI^LINK 

LINKJJAME 

ADJACENT_ftODR_TYPE 

FQ_AQJ.\.C3E‘Pr_C P JTAK2 
DLC_f*iME 
ADAPTER_NVKSER 
DESTINATION_ADD«ESS 
C :-_C P_5>KK e I C«_SD PAW 
ACTIVATE.AT_STARTU P 
L noTB D_R E S OU R CB 
BOI,ICIT._8 6CP_IU8SIOn 


(UttXOOOl)/* Dafina link to aubaraa 
(LKAHM) /* l^aarn type (IW.KN. LBN) 

.;piT»fn!.ini« 3 wci) !* esep hoj» 

(iemi-ahkt) /• 

(o) /« 

( X 1 <,OOOJ?4SOOOOM /* J745 LAN addr 

/* > r.o ap<m support 

(n:s) /* 

(MO) /• 1/aava sessions up 

(YES) I /* Support dopacdozit LD» 




DEFINK_PARTNER_LU 
FQ_PART?«RJLU_fRME 
PARTNER_LU_ALIAS 
C ONV_S ECU RITY_VER I FI CATI ON 
PARALLEU.SESS I ON_SUP PORT 


(USIMWflt.FRSO’ltSI ) /• Partnar LU */ 
(HOST) /* */ 
(NO) /» alraady verified«no */ 
(YES); /* */ 


DEFINE_PARTNER_LU_LOCATION 
FQ_PARTNBRJ,U_WiKE 
WILDCARD_EtfrRY 
FQ.OWTI HO..C P_JfAK2 
LOCAL_HODE_t*l_SERVBR 


(UllIKHK.NRSOlOI ) /* Partnar LU */ 
(NO) /* ccarpi«to nasie*/ 

(us;:a«KE.iniH3«i ) /* wm-.* Uni? */ 

(NO)i /• LEN •> no NN */ 


i 


a Reduce the burden of defining LEN nodes to their 
network nodes 

■ Partial or Full 

- Specify LU mask 

- Only one full wildcard allowed in all network nodes in 
network 

■ Useful for non-APPN subarea network connections 




mm 


Mm: 


mm 







*■' Wildcard into subarea 


Using VTAM 4„x as your NN 


/• NDF Fragments for the Subaroa Adjacent NN, or for each EN •/ 


DEFI NE_LOCI CAL^LI NK 
LI NR_NAME 

r 0_>D JACE RT_C P_HAME 
ADJACBNT_NODE_TYPE 
DLC _NAME 
ADAPTER_N UMBER 
DESTINATI ON^ADDRESS 
ACTI VATE^AT_STARTUP 
CP_CP_SB36ION_S CT-PCHT 

solicit. fiec?__iSE6« ton 

LrMITE 31 JESOCriCH 


(SUBAREA) 

(USIBMNR. VTAMSSCP) 
(LEN) 

(IBHTRNET) 

(0) 

(X 1 400037450000') 
(NO) 

(HO) 


/* Link to Subarea •/ 

/* V 

/* SSCP nano •/ 

/* LEN Connection */ 

/• •/ 

/* •/ 

/♦ Uao 3270 CW Addr. ♦/ 

/* Do Not Autoactivata •/ 

/* IJBK-ito .\P?K supjxort */ 

/ v flujipo: t DI.tTt • / 

/« J.iiav k a««tiOQit S3: *t 


DEFI NE_PARTNER_LU_L0CATI0N 

A OT ’ NS RJL 0 _JCA«* MOIUMNT'. UCA) 


V.r Lt<ACD_)3tP!'K r 
FQ_0WNI NC_C P_NAME 

local_node_nn_server 


(PARTI At) 

(USIBMNR.VTAMSSCP) 
(NO) ; 


/• Subaroa wildcard 
t* Wildcard Monk 
/» Portia:. Nildcord 
/• Route Allocates to: 
/■* Need if wo are a NN 



- Improves performance 

- Eliminates extra configuration for subarea 

- Allows APPN alternate routes to function 


AiffC 




m€ 


AMt 


Modes 


Transaction program definitions 


A set of modes is pre-defined by APPN! 

■ APPN user modes 

- #INTER and #INTERSC 

- #BATCH and #BATCHSC 
-#CONNECT 

■ CM/2 Compression modes 

- #INTERC, #BATCHC, #INTERCS, #BATCHCS 

■ Other APPN modes 

- SNASVCMG : SNA sen/ice manager mode for 
independent LUs 

- CPSVCMG : control point service manager mode 

■ Avoid creating new modes! 

■ Check RU (request unit) sizes for performance 


/* Tbl3 CM provided TP allows remote Display 
DEFINE_TP 

TP_NAME (RDSPSRVR) 

CONV_SECURIFY_RQD (NO) 

FILESPEC (C:\CMLIB\DSPSRVR\RDSPSRVR.EXE); 


of APPC configuration 
/♦ TP Deflntlon 

/* 

/• No socurlty chocks 


START^ATTACH ^MANAGER ; 


■ TP name is received on Attach 

■ TP definition maps TP name to executable 

■ Watch security parameters (conversation 
security)! 













DEFI NR_C PI C_SI DE_I NFO 

SYHBOLIC_DE5TINATION__NAK3 (TOXPPC ) 
FQ_PARTNER w J J U_NAHE(U3IByT0.rC>{y..B7P ) 
M0DK_NAHE (SINTER ) 

TP_NAME (aplngd) ; 


■ Provides a symbolic destination name that 
includes: 

- TP name 

- Mode name 

- Partner LU name 

■ Some platforms have security extensions 

■ Use SET verbs in applications to eliminate 
need 



■ Replaces AIX SNA Services/6000 1.2 

■ Supports end node and network node 
- AIX SNA Gateway/6000 also available 

b Uses SMIT (System Management Interface Tool) to 
configure profiles 


^ AIX SNA Server/6000 configuration 

b The same elements need configuration 

- define_local_cp --> Control Point profile 

- define_connection_network - > APPN Connection 

Network profile 

_ define_logical_link - > Link Station profile 

- DEFINE_DEFAULTS ~> SNA System 

Defaults profile 
(There is no search path lor TPs) 

- define_tp -> LU 6.2 Transactlon 

Program Name profile 

- DEFlNE_PARTNER_LU_LOOArON -•> Partner LU 6.2 

Location profile 

(Specify wildcard in partner LU name: ’USIMBNR.") 

- DEFINE_cpic_SIDE_INFORMATION LU 6.2 Side Information 

profile 



W 

" Networking Services/DOS 


b Replaces APPC/PC 

b Provides theCPI-C programming interface 

- DOS and Windows 

- Family-API programs can run in DOS or OS/2 
b Supports Low-Entry Networking (LEN) node 
b Uses text files for configuration 





^ f^S/DOS configuration 


■ Required node definition (CONF8G.NSD): 

// Sample network configuration file for token-ring 
// 

NSDC LAN // Adapter type 

NSDN CJSIBMNR. NRR53ABC // Local LtJ name; 3-17 characters 

TRLD SERVER, 60000C730100 // Link to NN Server 


a Transaction program definition: 

DEFINETP.NSD 

// Transaction Receive Incoming Transaction 

// Program Allocate Allocate Program 

// Name Pllespec Timeout Timeout Operation 

// . 

APINGD APINGD 20 30 operator_started 

- CPS-C side information: SIDEINFO.NSD 
a Mode definitions: MODE.MSD 


W 

•' Summary 


■ Remember APPC configuration tips 

- Use APPN to reduce APPC configuration 

- Use connection networks on LANs 

- Follow naming conventions 

- Use wildcards to attach to pre-VTAM 4.1 subareas 

- Avoid defining new modes 

■ Use APING to verify configuration 

■ Consult the Multi-platform APPC Configuration Guide 


mm 




me 


Mm 


Where to go for more Information 


More questions? 


Recommended IBM books 
-CPI-C Reference (SC26-4399) for programmers 

- Best of APPC, APPN, and CPI-C CD/ROM (SK2T-2013) 
APPC/APPN Technical Conference '94 

- Amsterdam, September 26-30 
APPC Connection newsletter 
CompuServe - GO APPC 
OS2BBS on IBMLINK - APPC forum 
FTP site on Internet 

- Anonymous ftp to networking.raleigh.ibm.com 
(192.35.236.4) and look in /pub/appc_appn 


APPC Market Enablement 
Dept. EA6/Bldg. 502 
P.O. Box 12195 

Research Triangle Park, NC 27709 

VM: APPCMRKT at RALVM6 

Internet: appcmrkt@vnet.ibm.com 

CompuServe: 76711,370 !GO APPC 

Phone: 1-919-254-4957 

Fax: 1-919-254-6050 










Improving-APPCi 
Configuration 



APPO Market Enablement 
IBM Networking Systems 
Research Triangle Pmrk r NC 
appcmrkt@vnetbm.wm 
1-919-254-4857 




Goals 


Goal: To improve APPG network configuration 

a Remove configuration as a barrier to APPC 
acceptance 

■ Encourage developers to design and document 
applications with configuration elimination in mind 

■ Provide consistent, cross-platform configuration 
documentation 

■ Promote new technologies that eliminate configuration 




me 


Configuration can be very difficult.. 


.Configuration can be very simple 


a Too much information is required 

- Local LUs 

- Partner LUs 

- Modes 

- Transaction programs 

- Links 

- Security 

- CPI-C Side Information 
■ Not enough defaults 

® Every platform is different 

- Different configuration methods 

- Different terminology 
There are solutions!! 



m 


Only provide one parameter for configuration 


» Fully-qualified LU Name 
= Network Name 
- LU Name 

iUSIBMNR.BWDEAN i 



nw 


am 


CS14 
















All APPN systems must ship seven modes 
- User Modes 

- #INTER, #BATCH, #INTERSC, #BATCHSC, #CONNECT 
-> Other Modes 

- SNASVCMG, CPSVCMG 

Many LEN implementations implement these modes 
Use these modes in your applications 
Use these modes in your examples 
Don't require application-specific mode names 


Don’t require side information in your applications 
If you must have side information, your application 
should define the side information 
Allow for alternate specification of partner LU, server 
TP, and mode 

- provide TP name and mode defaults 

- prompt for fully-qualified LU name 

- use NameServer if installed 


WBMCDiTWiOBnW 




mm 


M 


Eliminating transaction program definitions 


Ship APIMG and GETSENSE with progran 


■ Take advantage of TP defaults 

- CM/2 can search PATH 

- AS/400 searches QUSRLIB 

- but be careful about security 

► impede access to tile transter program 
» allow access to messaging program 


» APING separates configuration problems from 
your application 

■ Provides APPC installation verification 

■ Portable C/GPI-G code available for FREE! 

■ Runs on many IBM platforms 

- OS/400 

- AIX “ VM 

- CICS - OS/2 

_DOS - MVS 

■ Shows 

- Diagnostic information 

- Throughput information 


Ship GETSENSE to describe sense codes 







» In addition to graphical user interface, platforms may 
allow text files for configuration 
■ Distribute configuration file fragments with your 
applications: 

-CM/2: .NDFor .RSP files 
-NS/DOS: .NSD files 
= SNA Server/6000: profiles to import 

- APPC/MVS: provide JCL for TP and side information 
definition 

- APPC/VM: $SERVER$ NAMES, communications 
directories (SCOMDIR NAMES) 



w IBM Multi-Platform APPC 

^ Configuration Guide 


■ Maps an easy-to-use nickname to a fully qualified LU 
name 

■ Eliminates partner LU definitions for aliasing 

a Your application can use ANAME to resolve 
nicknames 

* LUs can change but the LU nickname remains the 
same 


~ AM 


IBM Multi-Platform 
APPC Configuration Guide 


n Provides consistent configuration procedures across 
IBM platforms 

■ Uses standard terms 

» Simplifies mapping values across platforms 
» Has step-by-step cookbook-like instructions 
* Was developed by APPC Market Enablement 

■ Is widely distributed 

Your customers find their answers there! 


Ship the Guide with your applications 

a Source is available 

- Contact mpconfig@vnet.ibm.com 

■ Distribute "as-is" or modify for your application 








Minimizes link definitions (to 1) 
Eliminates partner LU definitions 
Eliminates mode definitions 



’•* APPN 


Discovery 


Before APPN, SNA definition was difficult 

- Link information required for EVERY partner 

APPN has reduced the required definition 

- End Nodes only need address of a Network Node 

- Network Nodes only need addresses of other NNs 

Discovery makes it even simpler for LANs 

- ENs need NO link definitions for APPN service 

- Low Entry Networking nodes need NO NN link definitions 


Uses LAN 802.2 interface 

Uses limited broadcast to Discovery servers to find list 
of possible network nodes 

Defines and activates a logical link to the best available 
network node 


Returns the address of the PC’s NameServer 

NN 



NameServer 




















I 


Potential activities 


Support tor a directory - Auto-configuration server 

Centralizes CPI-C side nformation administration ■ Standard configuration language 

Distributed security ■ Application installation utilities 



■Ti 

» Eliminate as much configuration definition as 
possible 

b Don't require new mode definitions 
» Don't require CPI-C side information definition 
■ Ship APING for configuration verification 
« Ship the Multi-Platform APPC ConfiauratiarLQ! 
a Make your applications ANAME enabled 



APPC Market Enablement 
Dept E42 / Bldg 502 
P.O. Box 12195 

Research Triangle Park, NC 27709 USA 

Internet: appcmrkt@vnet.ibm.com 

CompuServe: 76711,370 

Phone: 1-919-254-4957 

Fax: 1-919-254-6050 


APPN and new technologies are reducing 
configuration 


Internet Anonymous FTP Site: networking.raleigh.ibm. 
CompuServe Forum: GO APPC 



















CS15: Using tiha&PPG 
Application Nfc&o • 


Powerful applications that are widely available 



■ Smooth migration from Host-centric to client/server 


David T. Lutz 

I IBM Corporation 

APPC Market Enabternent 
Internet: dav©Jutz(§’vn@t.fom.com 
IBMMail: USIB5N27 art IE3MMAIL 
Phone: (919) 254-4106 


■ Transparent configuration of APPC/APPN 
WE ARE PROVIDING SOLUTIONS!!!! 



Maps an easy-to-use nickname to a fully qualified LU 
name 

Provides interface for new implications to use ANAME 
to resolve nicknames 

ANAMELAD allows old applications to use ANAME 
nicknames 


Where is JBODINE? 



ANAME database 


* Very simple implementation! 



























locations 



* User supplied destination: 

1) try as symbolic destination name 

2) try as partner LU name or local alias 

3) try as ANAME nickname 


* All APPC Applets are ANAME-Enabled 



* A FTP - APPC File Transfer Protocol 


Command line interface 

- identical across platforms 

- modelled after industry standards for file tansfer 

Fast path ACOPY command 

- file transfer with one command 

- need to know filename and directory 

Full API, with C language support 

- other applications can use AFTP to transfer data 


*•’ Providing Useful Tools: AFTP 


" AFTP JBODINE ■ 



JBODINE 


■ Simple file transfer program 
a Excellent performance 
» Application programming interface (API) 



■ AFTP and ACOPY clients use the AFTP API 

■ Connecting machine = client 

■ Connected machine = server 
















■ A FTP = simple 

- send and receive files from a partner, perform directory 
and file manipulations 

■> IBM NetView Distribution Manager, IBM NetView FTP 
= full function 

- automated transfer, checkpointing and restart, scheduling, 
job priorities, server classes 



* Smooth Migration to Glient/Server: A3270 



b Puts APPC on the workstation Host 
(client/server ready) 

■> Lets you access and run old host apps 
unchanged 

b Provides APPN routing for 3270 
applications 





Program 

b Easy to Use 

a Object-oriented design 
> Extensive type-delining 
■ Minimal set ol standard return codes 
a Error descriptions can be extracted Irom API 





























Discovery 


How Discovery Works 


■ Uses LAN 802.2 interface 

■ Uses limited broadcast to Discovery servers to find list 
of possible network nodes 

■ Defines and activates a logical link to the best 
available network node 

■ Returns the address of your NameServer 



EN: All NNs, identify yourselves. 
NN: I'm a NN. 

EN: Send me your address. 



EN: Send me your address. 
NS: Here is my address. 


mm mm 


Transparent Configuration: Discovery and 
T ANAME 


Discovery NN 


Discovery,APPN NameServer 


A NAME,APPN Host 

» Discovery finds a Network Node 
» ANAME uses Discovery and APPN to find NameServer 
- A3270 uses ANAME and APPN to find host 


EN 

mi 

iHii 


Availability 


b IBM Products 

-the applications ship with several IBM products 

- ongoing effort to ship with other IBM products 

■ Specifications and Source Code 

- priced source code offering for AFTP, ANAME and 
A3270 (client) 

- free specifications 


■ Bulletin Boards 

* All you needed to know was your own name 
and the nickname of your A3270 Host! 












* IBM Products 


■ OS/2 

- CM/2 1.1.1 - supports AFTP and ANAME 

■ AIX 

- SNA Desktop/6000 for AIX - will support AFTP, ANAME 
and A3270 client 

- MVS and VM 

- VTAM - will support entire APPC Application Suite 


mm 




Platform Availability 




mvs 

VM 

^S/400 

AIX 

OS/2 1 

)OS 

[ 

ISCOVERY 



Yes 


Yesl 

- 

/ 

NAME/C 

Yes2 

Yes2 

- 

/es2 

Yes 

- 

/ 

NAME/S 

Yes2 

Yes2 

- 

7es2 

Yes 

- 

£ 

FTP 

Yes2 

Yes2 


Yes2 

Yes 

- 


3270/C 



- 

7es2 

- 

- 

fi 

3270/S 

Yes2 

Yes2 

- 


- 

- 


Yes Available: with an IBM Program Product 
Yesl Available: from a BBS (OS2BBS,CompuServe) 
Yes2 Availble: currently in Beta test 


Not currently available 



APPC Application Suite in Your Network 


Pulling it All Together: 
X:X Plug-and-Work 



Imagine... 

a Your APPC platform arrives in the mail 
h You install and start up APPC 
- Discovery runs automatically and finds your NN 

■ ANAME registers you automatically 

■ You logon to your host with A3270 

■ You transfer files with AFTP 

* All done with easy-to-remember nicknames 

* All done without ANY definition except your own 
computer's name 


















Migrating App§m$®m 
from HLLAPiiWAPPC 



APPC Market Enablement 
IBM Networking Systems 
Research Triangle Park, NC 
Internet: appcmrkt@vnet.ibm.com 
Phone: 919-254-4857 


n Introduction of HLLAPI concepts 

■ HLLAPI limitations in client/server applications 
» How APPC addresses HLLAPI limitations 

■ Comparison of HLLAPI and APPC programming calls 

o Steps required to start migrating HLLAPI applications to APPC 
» New considerations with APPC after HLLAPI 



Definitions 


HLLAPI - High Level Language Application 
Programming Interface 

- allows workstation program to interact with host through 
3270 and 5250 terminal emulation 

- workstation program acts as a "programmed operator" 

APPC - Advanced Program-to-Program 
Communications (LU 6.2) 

- enables high speed communications between programs on 
different computers 

- application programs communicate as peers 


What is HLLAPB? 



■ The API for access to 3270 and 5250 data 
streams 

■ Workstations access data via 
"presentation space" 

























S: ' The HLLAPi Interface 



■ Lets you write a program to 

- Simulate keystrokes 

- Extract data from presentation space 

- Place data into presentation space 

■ Programs don’t communicate directly 



■ Most calls have nothing to do with communications 
- SET CURSOR - position cursor on "screen" 


^ History of HLLAPI 


* No NetBIOS, APPC, or TCP/IP 

■ Lots of "dumb" terminals 

■ Mostly host-based application development 

■ Few LANs 

■ No downsizing or rightsizing 

■ No client/server 

■ 3270 emulation was prevalent method for PC to 
communicate with a host application 

■ HLLAPI was the only game in town 








What HLLAPI Applications D© 


HLLAPI Limitations in Client/Server 


Extend the life of host applications 

■ Simplify user interface 

- Add a GUI front-end on the workstation 

- Provide more extensive HELP text 
“Translate cryptic application messages 

- Reduce user training 

■ Front-end multiple host applications 

- Use multiple mainframe applications for a request 

- Emulate single sign-on 

b Developed with no host programming required 


■ Poor error reporting 

■ Host application dependent 

■ Indirect Communications 

■ Server must be on host 

■ Lots of network flows 

■ Logon and application security is difficult 

■ Host time-outs cause problems 

■ Duplication of processing 

■ Resetting host application after requests 



















APPC designed for direct communication 


- ' ::X APPC provides connectivity 



a APPC was specifically designed for Client/Server 
computing 



<C» a) 110*1 d* ter Wl 


mm 


mm 


Efficient data exchange 


■ APPC is not screen oriented 

- screen negotiation code is not required 

- no screens to acknowledge 

■ APPC provides efficient data transfer 

- a complete request can be sent as a single record, not as a 
series of screens 

- sends just the data required 

- message size not restricted by screen size 

- allows many different types of data 


APPC Strengths in Client/Server 


a Robust error reporting 

■ Partner application independent 

■ Peer-to-Peer Communications 

■ Flexible downsizing scenarios 

■ Optimized for network performance 
b Security built into protocol 

> Host time-outs not a factor 

■ Processing distributed among partners 
s Orderly conversation termination 







v A Typical HLLAPS "Conversation" 


v A Typical APPG Conversation 


0 Log onto the CICS address space 

■ Log onto the CICS application 

■ To process a request 

- Find correct screen(s) in application 

- Position cursor 

- Put user input into correct screen positions 

- Send ENTER key 

- Look for response screen 

- Extract data elements from screen for GUI 

- Reposition host application 




(OBM Barroom TCM 


mm 


■ Client side 

- Set conversation characteristics 

- Build logical record(s) 

- Begin conversation 

- Send logical record(s) 

- Receive logical record(s) 

- Extract data for GUI 

- End conversation 

■» Server side 

- Accept conversation 

- Receive logical record(s) 

- Build logical record(s) 

- Send logical record(s) 

- End process 



'*■ Starting a "Conversation": HLLAPi 


■ Obtain access to presentation space 

- CONNECT PRESENTATION SPACE 
-SET SESSION PARMS 

■ Log on user 

- SEND KEY (TAB) or CURSOR 

- COPY STRING TO PRESENTATION SPACE (user ID) 
-SEND KEY (TAB) 

- COPY STRING TO PRESENTATION SPACE (password) 
-SEND KEY (ENTER) 

- WAIT or PAUSE 

-SEARCH PRESENTATION SPACE 

■ Get host application to correct screen 

- COPY STRING TO PRESENTATION SPACE 

- SEND KEY (ENTER) 

-SEARCH PRESENTATION SPACE 


Starting a Conversation: GPS-C 

' Client " 

■ Start the conversation 

- Initialize conversation (CM IN IT) 

■ Set conversation characteristics 

- Symbolic destination name 

- SET calls 

Set_Sync_Level (CMSSL) 

■ Establish a conversation 

- Allocate conversation (CMALLC) 

Server 

■ Acknowledge the conversation 

- Accept conversation (CMACCP) _ 



o Send and receive screens 

b May need to traverse multiple application screens to fulfill a 
single user request 

- Program is in "guessing" state between screens 
> Atypical sequence 

- COPY STRING TO PRESENTATION SPACE 

- SEND KEY 

y^ppQ -WAIT or PAUSE 

- SEARCH PRESENTATION SPACE 

- COPY PRESENTATION SPACE TO STRING 




i Send and receive logical records 
. Only send specific data needed to process request 

» Atypical sequence 

- Client 

- Build logical record 

► Send record (CMSEND ) 

► Receive record (CMRCV) 

- Server 

» Receive record (CMRCV) 

► Send record (CMSEND) 


. Time-out from WAIT but XCLOCK or XSYSTEM still on screen 
-Cause ,_ 

► Host operating system problem 

► Network slowdown 

► Host application problem 

- Resolution 

. Reissue WAIT and try again 

► Prompt user for action 

a Unsuccesstul SEARCH PRESENTATION SPACE 

- Cause 

► Presentation space not fully refreshed 

► Unable 1o recognize screen 

► Unable to find screen element 

► Partner abend 

- Resolution 

► Search again 

» Try known key combinations 













More Error Handling: HLLAPI 


■ Host messages from application or system 

- Cause 

* Application error message 

► System notification 

- Resolution 

► Pass message to application user 

■ Failure attempting to send KEY to host 

- Cause 

► Host problems 

■> Communication problems 

- Resolution 

■> None 

► Inlorm user 


(C* BM Qujnnttin ItW ’ ’ ’ ’ ’ ' 


Error Handling: CP!-C 


* Full diagnostic information from APPC 

■ Two types of error conditions: 

- Network errors 

- Application errors 

■ Resolution 

- Check return codes 

- Retry call 

- Retry conversation 

- Notify partner program 

- Participate in network or application recovery 

- Log error information 



v Migrating HLLAPI to APPC 


Steps 

« Examine current functions 

■ Design logical records 
« Design conversations 

■ Design error handling 

■ Evaluate security requirements 
n Build client AND server(s) 




■ Functions may be artificially split due to HLLAPI 
- Too slow to combine 
-Too difficult to navigate host application 


■ Consider combining functions 

■ Look at data requirements for each function 

a Remove HLLAPI code 

- Smaller workstation programs 


■ Decide which functions belong on which platform 



tC) CGTJUBCtBn ' 







a Work with current user interface 

- Input and output data elements 

■ Examine logical application tasks 

- What is user requesting? 

- What data is sent and received? 

■ Identify tasks required for application 

- Inquiry, Update, Browse 

a Shift error handling from screens to records 

- Design error codes or fielcs into the logical records 


b Determine the flow of logical records 

- What/when to send 

- What/when to receive 

■ Look for opportunities to combine requests 

- Don't design conversations based upon host screens 

■ Include recovery and resynchronization 

- Now you have an opportunity to use these features 



t Application now has complete control 

- Use return codes and stsitus indicators 

- Easy to program for erro - conditions 

- Use logical records for ajDplication errors 

- Use SEND_ERROR feature of APPC 

b Programs must inform partner of processing errors 

- Design error conversation flows 


Use security provided by APPC 

- No "signing on" required 


. Migrate application-specific security to the workstation 

. Eliminate multiple user IDs and passwords 

» Consider Password Expiration Management (PEM) in 
CICS 3.3 and MVS 4.3 
- Can change passwords with APPC conversation 


Decide who will initiate application recovery 

- Client or server 













'S 


Build Generic Servers 


■ Unlike HLLAPI, new server programming is usually required 

■ Servers are easy to build 

- No user interaction 

- Processing as background task 

■ Still sending and receiving 

- Data instead of screens 

■ Build generic servers 

- Easy with logical records 

- Reusable host modules 

■ Smaller programs on host 



Whafs a generic server? 

■ Separate APPC code from application specific code 

- Allows APPC code to be changed without impacting 
application 

- Easy to port existing 3270 Programs 

- APPC server invokes application processes 



Two-sided conversations 
Data conversion 

- APPC carries data in any format, including mixed 

- No automatic conversion of ASCII to EBCDIC and vice versa 

- Must handle binary and packed decimal data formats 
Application recovery 

- Resending data 

- Synchronization and confirmation 

New configuration requirements for distributed network 
Network recovery 

- Reactivate connection 

- Know when to perform 
Error information 

~ No more "guessing" 


a Smaller workstation programs 
b Smaller host programs 

■ More reliable workstation applications 
» Better utilization ot network resources 

■ Less maintenance due to elimination of HLLAPI 
b Positioned to take advantage of downsizing 

o Eliminate bond between host and workstation 
application 












Where to go next 


» Helpful papers 

- APPC or HLLAPl: Decision Criteria 

APPC Application Design for HLLAPl and 3270 
Programmers 

- CiCS 3270 to APPC Client/S&rv&r: A Migration 
Metinodoiogy 

- Cii&nt/Server Computing with APPC and FEP( 



* More questions? 


APPC Market Enablement 
Dept. EA6/Bldg. 502 
P.O. Box 12195 

Research Triangle Park, NC 27709 

VM: APPCMRKT at RALVM6 

Internet: appcmrkt@vnet.ibm.com 

CompuServe: 76711,370 IGO APPC 

Phone: 1-919-254-4957 

Fax: 1-919-254-6050 


Where to go for more information 


■ Recommended IBM references 

- CPI-C Reference (SC26-4399) for programmers 

- Best of APPC, APPN, and CPI-C CD/ROM (SK2T-2013) 
. APPC/APPN Technical Conference '94 

- Amsterdam, September 26-30 
a APPC Connection newsletter 
» CompuServe - GO APPC 

. OS2BBS on 1BMLINK - APPC forum 

■ FTP site on Internet 

- Anonymous ftp to networking.raleigh.ibm.com 
(192.35.236.4) and look in /pub/appc_appn 








►Clay Boyd- 
IBM 

Internal Zip 3107 
11400 Bumet Road 
Austin, TX 78758 


An introduction to DCE 


{m 2) - 823-2762 
V$ICLAYB at AUSVM1 
clayb@vnet.ibm .com 


Clay Boyd 
Austin, TX 


What is the OSF7 


Presentation Outline 


► Origin of Open Software Foundation -- 
Cambridge, MA1989 

► Purpose ■ Encourage development ot an open, 
multi vendor environment 

► DCE is )ust one part 

► Members; 

-NCS 


► DCE Goals 

► DCE Features 

► DCE Functions 

► DCE Celt Concept 

► DCE Benefits 

► IBM and OSF DCE Plans 












► Create a Single System Image 
-Heterogeneous Systems 

- Transparent 

► Make Distributed Systems EASY 

- for Users 

- for Developers 

- for Administrator 

► High Availability and good performance 

► Industry Standards 





















DCE Features - Administrator 


^ : ^ ■ v ■■ ■ / vi : ' : 

: :>• . : :. •: 

DCE Features - Developer 

► Distributed File System 


► Network independent communications API’s 

Management 


► Security is simple and built in. 

- User/group/account 


► integrated Name space 

- ACL’s - Access Control Lists 


► Client/Server Paradigm easy to use 

Qtr±*3r*ct. 


► Heterogeneous machines, single source cod© 

- Distributed Time 


► Parallel ism Easy 

j ■: ;; >r. 

i 


- Server threads 

- Client threads 


DCE Functions 


Threads 

- Threads 


► Uses OS/2 kernel level threads 

-RPC 


► Multiple execution flow in the same process 

- CDS - Cell Directory Service - Names 


- Easy communications between threads 

-Security 


- Cheaper than processes 

- Time Service 



- DFS- Distributed File Service 









What is a Thread? 


eaocess 


Single-threaded process 





time 


PROCESS 



M ulii-threaded process 


Remote Procedure Calls * RPC : 

► Proven means of distributing application 
execution 

► Masks network complexity 

► Uses familiar programming paradigm 

► Integrated with other BCE components 

































































































































Local and Remote Procedures 




Cltent 


- RPC Interface - 





> 


CftentStubs 




Network 





Server Stubs 




Server 



: :■ . 

: . . ■' ' ■ ■ ■■ 

Cell Directory Service - CDS 


Ceil Directory Service - CDS 

► Comprehensive Directory Service 


► Origin 

► Integrated with RPC’s and with Security 


- DEC’S DECdns for CDS 

► Replicated 1 Databases 


- Semen’s' DIR-X for GD5 

- One Master, many Read Only copies 


► Standards 

- Updates by skulking 


- CCITT X.500/1SO 9594 Directory Service 

- Can make a Read Only copy into the Master 


- Internet DNS 

► Backup/Restore methods 


- X/Open Directory Service API 

j 















































































CDS Naming Conventions 


► Global Names 

"/.../<cell_name>/<dir_name>/<obLname>" 

"/.../clayscell/hosts/ciayb" 

"/.../Mandlebrot/fs/u/clay" 

► Local Names 
7.:/hosts/elayb" 

7.:/fs/u/clay" 

► Local File System 
7:/u/clay" 



i, : ■ :: > ^ ^ : . vrVix-:?;.'.- ■■ • . 

j: ; . •. ; 7 • •:'. : ,! " y >. ''; •• ^ x 7 777'7; : :> x: \ x Yx,. 7 

DCE Security 

► Used by other DCE services for secure 
environment 

► integrated with RPC 

► Origin: Kerberos from MIT w/ enhancements 
from HP 

► Standards: Kerberos (emerging), POSIX 1003.6 
ACL authorization, DES encryption 





























































Kerberos Security 























































Kerberos Security 


-Jack and Jane now 
share a new pw, "npw 1 




Security Functionality 

► Authentication of identities (private keys) 

► Authorization checking (ACLs) 

► Date integrity verification (checksum) 

► Data Privacy (encryption) 


DCE Time Service 


► Ensures clocks closely match standardized time 

► Integrated with other DCE components 

► Precise, fault tolerant clock synchronization 

► Origin: DEC'S Distributed Time Synchronization 
Service (DECdts) 

* Standards: interoperable with Internet NTP 


DtS Architecture 


tITC Time Provider 


i 


: Time Provider Interface: 


Server # Clerk 


























: V : DTS Votes... :: :V 

host 1 


& "y! 4:59:40+/- 6 

host 2 ; 


U..; 4:59:42+/- 20 

' host 3 


: 4:59:56 +/- 16 

i i •* • • •:•*• * ... 

Result 


HH 4:59:43 +/- 3 

4:59:20 

> • • . -i I 

4:59:40 5:00:00 5:00:20 

■ Tf:, : :.;i, ■■■ r : :V+ + :: . v 


' 'I.:,' T- T - 1 f- : rm I ' 

4:59:30 4:59:50 5:00:10 5:00:30 


DFS - Distributed File Service 


► Extends local file system model to the network 

► Allows transparent access to remote files 

► Integrated with other DCE components 

► High Speed and Availability 

► Oriain: Transarc's Andrew Fite System IAF&\ 



DFS File Server 


► TWo types of file systems 

- Local File System (LFS) (Episode) 

- other file systems, NFS, Unix, etc. 

► LFS is an advanced file system 
-high performance 

- log-based 
-fast restarting 

- High Availability 

- Strong Security 

- Backup and Restore 

























111 


Directory 

Service 


Time 

Service 


Security 

Service 


Remote Procedure Call (RPC) 


Threads Service 


Operating System 



||i;||§||§ 

i Distributed Applies 

ation |i 



IBM and QSF DCE Plans 


What we do, 


► We teach OS/2 DCE courses for: 
-Applications Programming Interface 

- System Administration 

► Our courses are: 

- Hands-on, You will write DCE client/server 
applications in the course 

- Over 50% lab exercises 

- Include example programs for most DCE 
functions 

► We teach in Austin, Texas or at your site 


OS/400 


Windows 























































































CS20 




My name Is... 



► Clay Boyd 

The DCE Application Programming 


IBM 

Internal Zip 3107 

Interlace 


11400 Burnet Road 



Austin, Tx 78758 



(512) - 823-2762 

Clay Boyd 


V$ICLAYB at AUSVM1 

Austin, TX 

I \ • •••' 

| ' ; . . ^ .'i:;/: V* V;; > V ; C : - ‘Xv V 


clayb@vnet.ibm .com 


Presentation Outline 


What is the OSF? 

► DCE Goals 


► Origin of Open Software Foundation - 

► DCE RPC 


Cambridge, MA1989 

► DCE Namespace API 


► Purpose - Encourage development of an open, 

► DCE Security API 


muitivendor environment 

► DCE is just one part 

► Members: 

~NCS 

-IBM 

-DIGITAL 

-HP 

I -Transarc 

1 ■ V ! 























► Create a Single System Image 

- Heterogeneous Systems 

- Transparent 

► Make Distributed Systems EASY 

- for Users 

- for Developers 
-for Administrator 

► High Availability and good performance 

► Industry Standards 


NETWORK 





► Universal Unique identifier 

► 128-bit part number scheme - identify DCE 
objects 

- Principals (eg. users) 

- Server interfaces 
-Everything.., 

► 0FE3973C-2FC5-11C A- BFB5-68QQ2 B1BB4F5 


DOE Client 
DCE Server 











































Remote Procedure Galls * RPC 


► Proven means of distributing application 
execution 

► Masks network complexity 

► Uses familiar programming paradigm 

► Integrated with other DGE components 


Remote Procedures 





























































[uuid(0cf616d8-b858-11 c9-8078-026G8c0aO3a7) > version(1.0) ] 
interface Math 


► Origin: Apgllo/HP NCS 

► Defined for both Client and Server 

► Interface Definition Language 
~ Interface Spec 

► Interface UU ID 

► Interface Version Number 
-interface name 

- Operation definitions 

- Creates the Client and Server stubs 
automatically 



Example - Server Program 


Example - Client Program 

















Exam pie - Remote Procedures 
• RPC Interface - 





Client Stubs 





Client 


Network 


Client/server Communications 


► What’s required for a client process to 
communicate with a server process? 

- Client must find Server host machine 

- Client must find comm port number Server 
process is listening to 

- Server must be listening! 

- Client sends a message to Server process 

- Server process handles Client request 

- Server returns message to Client process 


Cell Directory Service - CDS 

► Comprehensive Directory Service 

► Integrated with RPCs and with Security 

► Origin 

- DECS DECdns for CDS 

- Siemens’ DIR-X for GDS 

► Standards 

- CCITT X.500/ISD 9594 Directory Service, 
Internet DNS, X/Open Directory Service API 




























































































CPS Naming Conventions 

Global Names 

7.../<celLname>/<dir_name>/<obj_name>" 
7. ../clays_cell/hosts/clayb" 

"/... /Mand lebrot/fs/u/clay" 

Local Names 
7. :/hosts/clayb" 

7. :/fs/u/clay" 

Local File System 
7:/u/clay" 



Cfient/Server RPC call 


Client process talks 
directly with Server 
process as it makes 
its RPC calls.... 


Client/server Communications 

'► that's required fer a client process to 
communicate with a server process? 

- Client must find Server host machine 
-Client must find comm port number Server 

process is listening to 
-Server must be listening! 

- Client sends a message to Server process 
-Server process handles Client request 
-Server returns message to Client process 


GSient/Server RPC call 


Server Process advertises in the CDS 
Namespace 


hosts 


fblll! 










7. -/server", ifspec, host2 


























Glient/Server RPC eats 


► What's required for a client process to 
communicate with a server process? 

- Client must find Server host machine 

- Client must find comm port number Server 
process is listening to 

-Server must be listening! 

- Client sends a message to Server process 

- Server process handles Client request 

■ - Server returns message to Client process 



Client/Server RPC caH 


just LISTENS to 
the communications 

rvirt w/aitinn for a 


Client/Server RPC ca! 


Client process get the 
Server process's host 
machine name from 
the CDS Namespace. 


































host2 


Client process talks 
directly with Server 
process as it makes 
its RPC calls.... 


Client process gets 
the Server process's 
port number from the 
EndPoint Mapper... 


Client/server RPC cast 


Client/Server RPC call 


► I- Server registers with EndPoint Mapper 

► 2- Server registers with CDS Namespace 
- Server Listens on Communications port 

► 3- Client gets Server host name from CDS 
►4- Client gets Port Number from EndPoint 

Mapper 

► 5- Client process sends RPC information to 
Server process 
































DCE Security 


DCE Security 

« Authentication 


► Used by other DCE services for secure 

1 ^ ^ 9 Authorization 


environment 

| | ij « Applied consistently across 


► Integrated with RPCs 



► Origin: Kerberos from MIT w/ enhancements 



from HP 



► Standards: Kerberos (emerging), POSIX 1003.6 

i \ 


ACL authorization, DES encryption 

/ j X 

• 


: . '■ ’ . 




i , ' •' * ' - ■'■■■ ;*-7 ' '* -X? 

|.. v . . . .. . xyxx.. i./fyX. >' . x-. ; 

1 

i ' ’ .-.®. r} : . ' v ..■- 


j 


Security Functionality 

► Authentication of identities (private keys) 

► Authorization checking (ACLs) 

► Date integrity Verification (checksum) 

► Data Privacy (encryption) 


Secure RPC Calls 


► How can a Client process make a Secure RPC 
call to a Server process? 

- User logs in, starts the client process 

- Client process tells RPC runtime the type of 
Security desired 

- Client makes a normal RPC call 

- Server wakes up and receives cal 

- Server process gets Client Identity 

- Server process checks Client's access 
permissions via CDS object ACL 



































Privilege Attribute Certificate 


► Users Principal name and list of groups 

► Created by Security DataBase Server 

► Encrypted in the Server Process's Name 


PAG from clay 
to addServer 


PAG 

clay 

instructor 

dept617 

austin contractor 


What we do... 

We teach DCE courses for: 

-Applications Programming Interface 

- System Administration 
Our courses are: 

- Hands-on, You will write DCE client/server 
applications in the course 

~ Over 50% lab exercises 

- include example programs for most DCE 
functions 




















The DCE Application Programming 
Interface 


Clay Boyd 
Austin, TX 



► Universal Unique Identifier 

► 128-bit part number scheme - Identify DCE 
objects 

- Principals (eg. users ) 

«* interfaces 

- Everything... 

► 0FE3973C-2FC5-11C A- BFB5-68QQ2 B1BB4F5 


Remote Procedures 
















































Client Stubs 



Example - Server Program 


return ( a * to ) 


} 



Exampte - Client Program 


#irtcluete "add.h 
main() 


o = rnutt(. : c, 4 ); /* second rpc call */ 







































































Compiling and Linking 














• • i 

^ f ', A 


lliilill 


iiiiiiiiill 





























COS & Security Server Configuration 


Where .should DCE servers go? 


install CDS & Security servers on different 
•machines • 


What type of machines shoufd run DCE servers? 


Should the CDS Namespace be distributed?: 


Replicate servers '--where appropriate 


How many DTS servers are needed? 


CDS namespace isasuaSly not distributed. 


Will the cell use X.5O0 or DNS names? 


Will the ceil communicate with other cells via 
X.5Q0? 







DTS Configuration 


DFS Configuration 


Run FT servers on big and fast machines 


server: 


♦ Minimum 3 servers per cell. (10 total) 

♦ WANs require global and courier servers 

♦ Each server must be put into correct LAN-proflle 

♦ Gan also have servers sync with NTR 











Global Warning Configuration 



♦ Communication to other ceils requires GDA for 


RPC Administration (cont) 


Primary tool: rpccp 

► Interactive or command tine 

Typically used to : 

► Display CDS namespace entries 
* Display RPC endpoint mappings 

► Remove RPC endpoint mappings 


RPC Administration 











































►'Primary Tools: rgy-edii, achsdit, sec-admin 

- Interactive or command line 
> Prfrnary Tasks: 

- Creating/Viewing/Removing principals (*gy-edit) 

■ ► Includes users and application servers 
Adding principals to groups/organizafions (rgy-edit) 

Modifying properties at principals/cetl (rgy-edit) 

■»-Acct expiration date 

■ Default ticket lifetimes 

- Viewing Modify teg ACLs on DOE and application entities (acted it) 

- Manipulating security replicas (sec-admin} 

- Maintaining Registry DB 

► Checkpointing to disk (sec-admin) 

* Backup/Restore 



CDS Administration (coot) _ 

► Primary Tools: cdscp,cdsli, cdsdet 
* Primary Tasks: 

- Listing contents of CDS namespace (cdscp/cdsli) 
~ Showing CDS namespace entities attributes 

(cdsep) 

- Creating/Deleting entities for application servers 
{cdscp/cdsdel) 

- Apps populate entity with app info 
I - Creating replicas for higher availability (cdscp) 

- Changing master/read only replicas (cdscp) 
►Outages,maintenance,etc. ; 

-Maintaining CDS DB 
■ ► Checkpointing to disk (cdsd_diag) 

► Backup/Restore 



CDS Administration 


What towers are on...? 


ur server machine is going 
down for maintenance. 


Wonder what the 


'd better creaie a 
replica of this 
{flrectory since 
It’s being used 
so much. __ 


looks like now? 


Can you create me a 
rectory for my server's 
bindings? . 


Hey, you can get rid of 
that object you created 
for me. 































































IBM and OSF DCS Plans 


DFS Administration 


Geez, this aggregate is 
getting full. Better set up 


I can't write to the server 


anymore. 




Primary Tool: scout, fts, back 
Primary Tasks: 

♦ Monitoring filesets/aggregates (scout) 

* Chocking u sage vs. quotas 

♦ Creating new filesets (fts) 

♦ Ftieset backup 

* Online clone (fts) 

* Tape backup (back) 


► We teach OS/2 DCE courses for: 

- Applications Programming Interface 

- System Administration 

► Our courses are: 

- Hands-on, You will write DCE client/server 
applications in the course 












































CS23 


Choosing DCE as Your 
Client/Server Programming 
Environment 

( 8 / 04 / 94 ) 


Kim Wiikens 

LAN Systems ISV Relations 
Austin, TX 


Si LAN Systems™ 


What is DCE? 


W 


% 

\ 


% 




sj>> 

$ 

co 


Jp'e 


/ 




H3\®' 


/ 


\>s © 


E 




x 


CD 


% 


vts 






S\S 


£ 

A# 

HU LAN Systems^ 


Today's Agenda 

► What is DCE? 

► How could DCE fit into your organization? 

> Latest word on tools and products 
*> Latest word on customers 

a* \Mbi\i ie 1 tori tn HOF 

" ..... 

> How to get started with DCE? 


WM LAN Systems " 


DCE is Plumbing 



MI LAN Systems 

























DCE Goals 


&> Create a Single System image 
- Heterogeneous Systems 
“Transparent 

► Make Distributed Systems EASY 
“for Users 

-for Developers 
“for Administrators 

► High Availability and Good Performance 

► industry Standards 


HIM LAN Systems 


Marketplace swings over the past decade 


DCE Architecture 


DCE 



DM 


Sizing: Up, Down and Right 


Transaction processing 
Data Access 
Robust platform 













































The New Information Environment 



Why should you write DCE-enabled apps? 


TO SAVE 



Why would you get DCE? 



IBM OS/2 - first run-time client on Intel & SDK 
IBM Windows - run-time client & SDK 

IBM AIX - leadership DCE offerings w/first availability of DFS, GDS & 


IBM VM/MVS- EC IP program now, run-time client 4094 

IBM 08400 - SDK 3094 

Sun Solaris UNIX - RPC, threads, CDS & DTS 

HP/9000 HPUX - full function support including DFS, GDS & Encina 

DEC OSF/1 - DCE base services & security server 

DEC Ultrix - RPC. threads, CDS & DTS 

OpenVMSVAX " client support 

■ Novell - anticipated DCE gateway support to Netware NDS, UnixWare & 
backend support with Appware directory services 
• Microsoft “ proprietary RPC with Windows, NT supportioimjpEC 


N Systems " 





















■ App deveSopment tooSs 

-Ellery Systems, KnowledgeWare, MicroFocus, NobleNet, 
Open Environment Corp, Seer Technologies, Template 
Software, Uniface Corp. 

■ System management & security 

-Computer Associates, Enigma Logic, HaL Computer, 
Mergent International, Pinnacle Technology. 

“Database and communication 

-ASK Group, Oracle Corp, Sybase. 

a VerticaS and horizontal apps 

-Atrium, Integral, Lotus, Open Systems Associates. 

* And many more ... 



DCE Administration Tools 


HAL Computer Systems - Cell Manager 



Cell Directory 

Security 

Time 

RPC Endpoints 

Application 

Management 


• platforms: AIX/6000 Beta, other Unix 

• target: cell administration 

• graphical view/modification of DCE cell resources 

• productivity over command driven admin 

• DCE application server management 



Open Environment Corporation (OEC) - Encompass 



3 tier client/server architecture 
rapid design, prototype, delivery 
DCE standards-base foundation 


strong integration of GUI, RDBMS tools HM LAN Systems 



Available Today or Becoming Available... 

• OS/2 and Windows Integration Tools 

• Mainframe Integration Tools 

• Other Programming Languages 

• Application Development, Test, Debugging Tools 

• Performance Tools 


HIM LAN Systems 











DCE Products 


Atrium Technologies - Dazel 

Source Drag & Drop Client Destinations 


Documents GUI 



Printing, Information Delivery 
• AIX, Unix clients/servers, Windows client 



Latest Word on Users 


■ Associated Grocers 

- moved electronic ordering system 'top down' with DCE 
and OEC tools 

■ Charles Schwab & Co 

- initiated first DCE cell and roll out plans for thousands of 
users 

■ Earth Data Systems 

-newdeforestation monitoring program based on DCE 
using Ellery Open Systems software 

■ BeSS Sygma 

-early OS/2 DCE beta program participant with successsful 
prototype and plans to rollout 

■ And Many More 

- Amoco, Lehman Brothers, Tokio Marine & Fire 
Insurance, Bellcore, Citibank... 

OK LAN Systems'^ 


DCE Products 


Oracle Corporation - DCE Adapter 

Client Server 



• AIX, Unix clients/servers 

• rpc interface, also existing Oracle APIs preserved 


• DCE directory & security integration 

• Beta underway today IMM LAN Systems 













Transportation Company 



• heterogeneous network 

• reliance on directory services 

• national IMS database HI 


Local Office 


Client 


MVS Host 


IMS Data 


Why is IBM committed to DCE? 


DCE Customer Examples 

Manufacturing Company 


Branch Office Regional 

Sites/ Centers 


Office 


Server 

App'ns— 



Oracle 


Oracle 

—Forms- 


Database 


Corporate 
Head qua ters 
I MVS Host 


IMS Data 

Oracle 

Database 


Distributed Print - Atrium Dazel 


Distributed File System 


AIX regional servers 
Windows & AIX application clients 
Oracle Forms & PC apps 
DFS for binaries, file data 
TCP/IP Network 
central/regional admin 



Open Blueprint 


I 


Applications 

and 

Application 

Enabling 

Services 


Distributed 

Systems 

Services 


Network 

Services 



E3M LAN Systems™ 


Subnetworking 














Where Does DCE Fit? 



Why did IBM use DCE? 


TO SAVE 



KM LA N Systems 


DCE in the LAN System 


Host 

DCE 

- MVS 

- VM 

- OS/400 



- Notes 

-acs-os? 

-acs/6000 


MM LAN Systems* 


DCE is DSOM’s plumbing 


Client 

application 


Proxy object 



% 


Hide 

complexity 


Server object 


- Extended SOM with full COR BA model 
-Transparent distributed computing 
facilities via sockets, DCE, ... 


MM LAN Systems 



































































IBM LAN Systems Performance 
Austin, Texas 


Copyrights and Trademarks 


DCE for OS/2 
Base Performance 


PSP Technical Interchange 

- Atlanta, 11 Sep 1994 

- Berlin, 19 Sep 1994 


Tim Li 512-838-0449 
Bob Russell 512-838-0844 
Ray Pekowski 512-838-8164 
11400 Burnet Rd 
Austin, Texas 78758 


a Copyright 1994, IBM Corporation 

* IBM, AIX, OS/2 and RISC/6000 are registered trademarks of 
International Business Machines Corporation. 

■ Microsoft is a registered trademark of Microsoft Corporation. 

■ Windows is a trademark of Microsoft Corporation. 

- OSF is a trademark of the Open Software Foundation, Inc. 

■ LAN Workplace is a registered trademark of Novell 
Corporation. 

a PC/TCP is a registered trademark of FTP Software, Inc. 

0 3COM is a registered trademark of 3COM. 


AGENDA 


Introduction 


-> Introduction 

■ Performance of Core DCE Functions 
0 Performance of Multiuser Applications 
« Performance of DCE for Windows 
a Summary 


a General Approach for Performance Analysis 

- Benchmark Measurement 

- Sensitivity Studies 

■ Base System Configurations 

- DCE Server: IBM PS/2 Mod. 95 (33 MHz 486) 

- DCE Client: IBM PS/2 Mod. 80 (25 MHz 386) 

- IBM Token Ring running at 16 Mbps 

- IBM OS/2 2.1 

- IBM DCE Software Developer's Kit for OS/2, 
Version 1 (Based on OSF DCE 1.0.2) 


Introduction - DCE Architecture 


AGENDA 


Applications 



DCE Threads 


Operating System and Transport Services 


Introduction 

Performance of Core DCE Functions 
Performance of Multiuser Applications 
Performance of DCE for Windows 
Summary 


CS24 


CS24 









« Natural extension of Local Procedure Call 
« Shield underlying networking technology 

- Mask difference in data representation 

- Used by other components 
= High frequency usage 

- Protocols supported 

- UDP 

- TCP 

® Benchmark 

- Variable length array 

- Pipe 


RPC vs TCP/IP Sockets (UDP) 



%tes Transferod 


RPC/UDP - Blocked Arrays vs Pipes 


RPC Performance - UDP vs TCP 



RPC vs TCP/IP Sockets (TCP) 



RPC/UDP Machine Speed Sensitivity 








RPC/UDP with Security 



Tips for RPC Performance _ 

h Performance varies by 

- Size of data transfer 

- Transport 

- Pipes vs array 

- Security level 

- Hardware 

. Use TCP for < 2 KB data, UDP for >2 KB data 
Q Use UDP for varying amounts of data 
B Use pipes if overlapping is possible 
e Use security level properly 


Ceil Directory Services (CDS)_ 

. Look up and manage names of resources in a cell 
e Hierarchical name space 
b Respond to name space requests from clients 
b Caching allows fast data access 
■ Benchmark 

- Based on CDS Control Program (CDSCP) 

- Selected commands measured 


CDS Control Program Base Commands 



CDS Control Program SHOW Command 


ELAPSED TIME (SEQ 



NO. OP OBJECTS OR DW cCTORHtS 


Security Services ____ 

. Enable client/server to prove their identity 

- Offer integrity and privacy of communications 
b Control access to resources 

- Maintain its own namespace 
B Benchmark 

- DCELOGIN 

- RGY_EDIT - edit the registry database 

- ACL_EDIT - manage access control list for name space 
objects 


CS24 









Key Functions of Security Services 


Common RGY_EDIT Operations 




Tips for Other Services 


AGENDA 


. CDS 

- Set CDSCP CONFIDENCE to low for repetitive data 
■- Client could take up large portion of elapsed time 

■ Security 

- Use PE_SITE, (set BIND_PE_SITE <>0) 

- Client could take up large portion of elapsed time 
- Threads 

- Use OS/2 threads for performance 

- Use DCE threads for portability 


Introduction 

Performance 

Performance 

Performance 

Summary 


of 

of 

of 


Core DCE Functions 
Multiuser Applications 
DCE for Windows 


Environment Base Configuration 


Multiuser Benchmark - RPC Data Transfer 


- Server: PS/2 Mod. 95, 33 MFIz 

- DCE Cell Services 

- POS Application Server 

- DBM Server 

■ Clients: PS/2 Mod. 57, 20 MHz 


- CPU intensive 

■ Based on existing RPC sample program 

■ Data transfer - Variable-length array 1 to 8192 bytes 

■ 1 terminal submits 1 data transfer every 10 seconds 


CS24 











RPC Data Transfer - UDP vs TCP 


Multiuser Benchmark - Database OLTP 


d 

8 

a 

Q) 

Q_ 


Ta 


Q 



o Based on an OS/2 ES 1.0 DBM OLTP benchmark 

- A banking application with SQL statements 

- 1 terminal submits 1 transaction every 10 seconds 
a Comparisons between 

- DCE RPC 

- DBM Application Remote Interface (DARI) 


DBM OLTP - Response time Pro ration 



125 


Response 

Seconds 

0.8 _. 


0.4 


0.2 


OS/2 Database Manager 


25 50 75 100 

Client Workload 


0.6 


Database OLTP - DARI vs RPC 



Multiuser Benchmark - Point of Sale (POS) 


Point of Sale Benchmark 

- Response Time Proration 


. Based on a retail application 
& Average sale - 5.5 authenticated RPC transactions 

- Select a catalog page - 16 KB bit image 

- Select 1 to 4 items - 168 byte data returned per item 

- Get customer information record - 512 bytes 

- Send all data to the back room repository 
- 1 terminal submits 1 sale in 1 minute 


0.5 

0.4 

C/D 

"O 

o 0.3 


$ 


0 

0 50 100 150 200 250 

Client Workload 



CS24 









Point of Sale Benchmark with MPTS Tuning 


- Reduced RAM 


■= cluster @ 4 KB 250 - 

MPTS 'mbuf Tuning 

- mfoufs @ 256 B 

Tuned 

- saving - 448 KB 200 - 

clusrers=64 

mbufs=512 

» Improved g 

jy 

Performance 0 150 - 

Default 

£ 100 - 

Jp clusters=M4 

o> 

Z3 

O — 

Jp mbufs=l 024 

^ 50 - 

/ 

0 _ 

1 1 1 1 1 1 1 l 1 | 


0 50 100 150 200 250 

Client Workload 


Observations on Multiuser Applica tion 

* Results are consistent with single client performance 

■ Queueing characteristics are well-behaved 

- The DCE proration of the elapsed time is small for the cases 
measured 

■ RPC as a DBM transport compares favorably with DBM DARI 
using NetBios 

B MPTS MBUFS tuning may improve performance and RAM 
requirement 


AGENDA 


a Introduction 

■ Performance of Core DCE Functions 


Performance of Multiuser Applications 
Performance of DCE for Windows 


■ Summary 


Measurement Environment 

- Windows DCE client 

- IBM DOS 5.0, Microsoft Windows 3.1 

- IBM DCE Client for Windows Version 1.0 (Based on OSF 
DCE 1.0.1) 

- One of the TCP/IP transports 

► Novell LAN Work Place for DOS Version 4.1 

► 3Com TCP with Demand Protocol Architecture, Version 
2.0 with LSP 1.31 Token Ring Driver 

► FTP PC/TCP for DOS Version 2.11 with the IBM LSP 1.31 
Token Ring Driver 

= OS/2 DCE Server 


RPC - UDP vs TCP ____ RPC with 2 Security Binding Options 

Novell Transport n NoveSI Transport 

Server: DCE for B TCP Protocol 



fetes Trtreftrtfl 





RPC with Daemons 


RPC with Different TCP/IP Transport 


* UDP Protocol 
a Security Binding 
Using PE_S!TE 
B Server: DCE for 
OS/2 

» Client: DCE for 
Windows 



- Novell Transport 
0 TCP Protocol 
. Security Binding - 
using PE_S!TE 
B Server: DCE for 
OS/2 

» Client: DCE for 
Windows 


No ol Daemons 



H-1-1-1-1-1-i-1-1-1-1 

0 IKS 2SS SSB SBS KB& 7SS 6039 S3® KB5S 
Bjfcs Tresfe-si 


RPC with Security 


- Novell Transport 
■ TCP Protocol 
. Security Binding - 
using PE_SITE 
» Server: DCE for 
OS/2 

® Client: DCE for 
Windows 


£ 



Prototype of 8 KB RPC with Security 


a Novell Transport 
» TCP Protocol 
- Security Binding - 
using PE_SITE 
» Server: DCE for 
OS/2 

B Client: DCE for 
Windows 



Prototype for RPC 

» Novell Transport 
® TCP Protocol 
» Security Binding - 
using PE_SITE 
« Server: DCE for 
OS/2 

Client: DCE for 
Windows 


ELAPSED TIME (MS) 



BYTES TRANSFERED (In TDousintfc) 


DCE LOGIN 




AGENDA 


Tips on DCE for Windows Performance 

■ Use TCP in stead of UDP if possible 

■ Avoid using packet integrity and packet privacy level of 
security if possible 

a Choose transport product with better performance 
D Avoid starting DCE daemons if not required 
= Set Security Binding option to use the PE_SITE file if 
appropriate 


Introduction 

Performance of Core DCE Functions 
Performance of Multiuser Applications 
Performance of DCE for Windows 
Summary 


Summary ... Factors Affect Performance 

■ Hardware 

- Processor speed 

- RAM size 

- I/O speed 

« Transport protocol & its implementation 
a Size of data transfer 
- BIND_PE_SITE 

■ Level of security 

■ Caching 

Application Design 


The Sources 


■ "Performance of Key Functions in DCE for OS/2" by Cindy 
Corn, Tim Li, Ray Pekowski and Bob Santeford, IBM Personal 
Systems Technical Solutions, Jan/Feb 1994 

» "IBM DCE for OS/2 Multiuser Application Performance" by 
Benetta Perry and Bob Russell, IBM Personal Systems 
Technical Solutions, Jan/Feb, 1994 

■ "Performance of Key Functions in IBM DCE Client for 
Windows" by Ray Pekowski, a white paper 


CS24 




IBM LAN Systems Performance 
Austin, Texas 


IBM 


Work In progress .. 

The current contents of this presentation reflect performance 
testing still in progress at the deadline for the conference 
proceedings. 


DCE Enterprise 
Performance 


Final performance results and discovery of any unexpected 
behavior will be added before the conference date. Updated 
handouts will be available at the conference sessions. 



OSF DCE Developers Conference 
o Boston, 29 Aug 1994 
PSP Technical Interchange 
b Atlanta, 11 Sep 1994 
o Berlin, 19 Sep 1994 



Bob Russell 512-838-0844 
Tim LI 512-838-0449 
Ray Pekowski 512-838-8164 
11400 Burnet Rd 
Mail Stop 9151 
Austin, Texas 78758 



Copyrights and Trademarks 


Agenda 


b Copyright 1994, IBM Corporation 

- IBM, PS/2, OS/2, AIX, RISC System'6000 are trademarks or registered 
trademarks of International Business Machines Corporation 
0 Some of the information has been published in IBM Personal Systems Technical 
Solutions, Jan/Feb 1994, and July/Aug 1994, and PSP Technical Interchange 
proceedings April 25, 1994. 

« The origional cartoon character is ba.sed on the character 'Sam', copyright 1978, 
1979, 1982, 1983, 1989 by R. O. Russefl 
n Non-IBM Trademarks include: OSF is a trademark of the Open Software 
Foundation Inc., NFS, Network File System, Sun, SunOS, Sparcserver, ... 
Sparcstation and Solaris are trademarks of Sun Microsystems||d|i:^|j HP 
HP 9000 and Hewlett-Packard are trademarks of Hewlett-Packard^bTnp^ 
Snifter Network Analyzer is a trademark of Network General Corporation. S 
a trademark of Sparc International. 

«. Tinkertoy is a registered trademark of Playskool Inc., a subsidiary of Hasbro Inc. 
b This presentation is unclassified 


■ introduction 

■ POS Benchmark 

» System Topology Performance Studies 


- Clients 

- Network Support Servers 

- DCE Core Servers 

- Application Servers 

- Ethernet Gateway 

- Remote Offices 

► High-speed WAN 

► Low-speed WAN 
■ Q and A 



LAM Systems Performance, Austin 


Customer Requirements 

Survey Results - January to June 1994 


a DCE for OS/2 and Windows 
* DCE/6000 for AIX 
h IBM LAN Server 

. AnyNet/2 Multi-Protocol Transport Services 
» LAN Distance 
® Workplace 






| Relative Importance (Normalized 1-10) | 


Rat form Windows OS/2 AIX MidRange Mainframe 


Client Workstation 

1 5 

10 6 



Application Server 


10 9 


4 3 

DCE Server 


9 10 


3 2 

1-99 1 00-499 500-999 1000-4999 5000+ 

Number of Clients 

2 

10 


5 1 

Builcfing City State Country Global 

System Geography 

8 

10 


1 6 1 2 _ 

Data 

Database Transfer Graphical 

Application 

Characterization 

9 

10 

3 

1K-4K 

32K-64K 

512K-1M 

Data Transfer Size 

10 

6 

_ 

4 



CS25 


CS25 















Enterprise Topology Objective 







Point of Sale (POS) 


■ High visafeiiaty elements 
of many customer 
applications 

■ Based on the premise of 
a retail catalog order 
entry transaction 

3 5.5 Authenticated RPC 
calls per Custom©? SaS© 

■ Workload assumptions 
One client processes on 
complete customer sal© 
in on© minute - 1 CSPfyi 


Client 

Primary Server 

pa 



Customer 


Ml 

POS IDL 


Catalog 


i posappi. ir~L 





i_i i_i 

Client RPC stub 


Price 





History 



Server RPC stub 



POS Customer Sale 

. DCE API Calls 

- rpc_ns_bindingJmport_begin 

option: force expiration of local CDS cache 

- rpc_ns_binding_import_next 

- rpc_ns_bindingJmport_done 

- rpc_ep_resolve_binding 

- rpc_binding_to_string_binding 

- rpc_binding_set_authJnfo 

default: CALL level authentication 

■ POS RPC Transactions 

- CATALOG get 16 KB image of catalog page,.:.v:$|i:!^^ 

- CUSTOMER get account record by phone numbSrf§12 bflps 

- PRICE get price and description for 2.5 items, 168 bytes 

- HISTORY write sales information to history file, 384 bytes 

■ DCE API 

- rpc_binding_free 

option: force client to DCELogin periodically 


Philosophy 

■ High-level performance analysis 

a Psychoanalysis, not brain surgery 

■ Throughput vs. RPC response time; 

- Responses less than 1 second are instantaneous 

- Responses more than 1 second are too long 

■■ The reported throughput assumes 90% of the responses 
are under the 1 second guideline 



















Theme: Construction To r 


Baseline Throughput of the 
"Standard" Cell Configuration 











































With and Without Re-Binding 


DCE Servers 

"Standard" Configuration 


Primary Security Secondary 

CDS & Time CDS 

PS/2 PS/2 PS/2 

9585 8595 9577 

50 MHz 33 MHz 50/25 MHz 





CDS Namespace and Security Registry! 
Population Assumptions TL 


a The initial CDS Namespace population is based on 
statistics from large customers using IBM LAN Server 
* Assumptions: 

- Directories are about 1-to-1 for users. 

- Five to eight applications (objects) for each 50 users. 

- Fifty users per LAN domain. 

■ Initial DCE entities: 

- Security Registry 

► 1,000 Accounts and Principals 

► 20 Groups 

- CDS Namespace 
^ 1,000 Directory objects 

► 160 Program objects 



DCE Administrator Script 

■ sdscp 3 rgy_edit, acl_edit and rpccp 

■ Script runs In 2.5 minutes 

a Second half of script backs out changes made during the 
first half 

■ Script runs contfnuosly 




Effects of Security Registry and 
CDS Namespace Population 



■ Measure maximum throughput with: 

- Default Registry and Namespace population. 

- Add 1000 to DCE Security Registry. 

- Add 1000 to DCE CDS Namespace. 

■ Repeat tests with a Secondary CDS server configured. 

- Throughput was 1,640 CSPM +/- iq for each test. 

- No measureable effect on steady-state performance for 

any of these variations. + 

- The first invocation of DCELOGSN and Tt* 

rpc_ns_bindingJmport_riext were slightly longer. 'H 

“ The time for CDSD to initialize on the CDS server is 
significantly longer with the full CDS population. 

“ The time for clients to start and configure SCLSENTD is 
noticeably longer with the full Registry population. 


PS/2 and RISC System/6000 


- PS/2 Model 8595-0KD $3 
MHz 

■ RISC System/6000 Model 
520 



CS25 























Throughput - CSPM 


OS/2 and ASX Dedicated Servers 



POS Application Server DCE Services Server 


DCE Server Topology Comments 



- CeSS throughput within 5% range when DCE Servers 
substituted within: 

- RISC System/6000 Models 580, 520, 220 

- PS/2 Model 95 33 MHz, 50 MHz 

- Hewlett-Packart HP 9000 Model 8278 

. The presence of a Secondary (redundant) CDS Server has 
no measurable impact on cell throughput 

- Except: Clients don't see changes to the CgS 

namespace until the Secondary CDS serv^iii^^at^ 
normally about 30 seconds * 


POS Distributed 
Application Servers 




Multiple Application Servers 



One to Four Application Servers 


Point of Sale Distributed 



Distributed POS Application 





[ POSAppi. ||~|. 


Primary Server Surrogate Servers 


POS IDL 



Customer IDL 


Customer 



Catalog 





Price IDL 


Price 



History 




■ Relieved the POS 
application server's I/O 
bottleneck 

■ 54% improvement in 2 

throughput & 

■ New bottleneck is the j 

application server’s CPU | 

a Aggregate response time 
for complete Customer 
Sale (5.5 RPCs) 
increased 13% from 4.6 
to 5.2 seconds 



POS Performance with 
Two Surrogate Servers 


CS25 

















POS Application Servers 
"Standard" Configuration 

Five POS Primary servers 
PS/2 8595/8590 33 MHz 



RISC/6000-220 RISC/6000-580 

or 520 


Primary Server Surrogate Servers 



PS/2 -vs- RISC System/6000 
POS Primary Servers 



tfiji 



Discussion: 

Multiple instances of an application 


mu 

T f 


* Things to consider when running multiple instances of an 
application to handle additional workload: 

* CDS binding import randomly selects a server binding. 

► Adding a super-fast application server to handle peak 
hour loads may cause a horsepower mismatch. 

► The maximum total throughput is equal to n times the 
slowest server. 



Ethernet LAN Segment 
Other Headquarters Hardware 



Ethernet Topology 


Thick-wire Thin-wire 

Ethernet Ethernet 10BASET 



Sun 

Sparcstation 

LX 


Hewlett-Packard 
HP 9000 
827S 730 


Sun 

Sparcserver 

1000 


Read/Write Response Times 

. POS "History" 
transaction: Write 
(append) 284 bytes. 

- POS "Catalog" 
transaction: Open, Read 
18 KB, Close. 



Application^ File 
Server — Server 



Response Time (milliseconds) 


CS25 


















Throughput - CSPM 


NFS Sharing of POS Databases 



mmmti 

IFt 



LAN Server 3.0 
Advanced 


LAN Server 3.0 
Entry 


100 200 
Client Workload 


LAN Server 3.0 
(all POS databases) 



«, NFS/6000 for AIX 
45% 

“ NFS for OS/2 


100 200 300 

Client Workload 


Network File System 
(History and Catalog only) 


gateway router 
-16 Mbps Token-ring 

- 10 Mbps Ethernet 
» Sharing files on: 

- RISC/6000-220 

- RISC/6000-520 

- RISC/6000-580 

- SUN Spareserver 1000 

- HP 9000-827S 

* Communications 
hardware bottleneck 



Token-ring Ethernet Token-ring 


Token-ring Ethernet Ethernet 
NFS mount Access Path 


Enterprise Mode! 

Remote Offices and WANs 



High speed Sink between 
Headquarters and the Region Office 



HwSVWWP’nng Network Bridgi 

inf 




Low speed link between 
Region Office and Branch Office 


Region Office 

Clients 

PS/2 - OS/2 
PS/2 - Windows 3.1 



Region Office 
to 

Branch Office 





































Minimum Baud Rate 
for One Client 


0 LAM Distance is intended for a single user 
0 At 38,400 bps, 7=5 QSPM saturates the line 
b One client would require 5,120 bps 




Comparison: 

Ping 4K -vs- Authenticated RPC 4K 


1 3 



RPC Data Transfer 
Authentication Levels 





















WORK IN PROGRESS 



Questions and Answers 


Backup Slides 














Business and Computing Environments 


There is a need for a technology which is: 

• More sympathetic to the diverse nature of 
networks 


» More tolerant of the different operating 
environments 


e Less exacting rules to be followed by the 
applications to 
interoperate 


The answer is Messaging and Queuing 


/S Some Reasons for Distributed Processing 

9 New Business Opportunities 

-Business partners (suppliers, distributors, 
customers) 

-Automation of bus ness procedures 

© New Client - Server Model 

- Smaller client workstations 

- Larger servers, located to suit business needs 

® Cheaper Processing 

- Integration of applications on smaller processors 
-Sophisticated applications 

© Better Access to Data 

- Uniform data access 

- Data closer to end user 









mge 



Spans ' 1 


Link Islands Together 
® Improve Productivity 
© Improve Efficiency 
® Improve Customer Service 
@ Reduce Costs 


CofiWM >99< U2rpora/ort 



The Networking Blueprint 



® One interface across a wide 
range of platforms 

® Shielding of developers from 
networking complexities 

© Business flexibility 
through time-independent 
processing 

® Robust middleware for 
business-critical, distributed 
applicafions 


mmt 


«»□ 


Messaging and Telephone Analogy 



Successful call depends upon: 

Constant communication line 
availability 


Constant people availability 
Common, defined language 



















Communications Protocols defined internationally 


Do not need to know WHERE telephone is or HOW 
telephone connection happens 


Simply need name (telephone number) of 
destination 



PoInt-to-Point Connections, 
Many-to-Many Connection Exploslor 


' „ i Answering 
: Machine 

Partner may be busy 

Partner may be absent 

Messages can be picked up at later 
time 




MQI Communications 













Connector 



Application Programs 










































Retail Example, Mixing Environments 

























3uo:n«o» ApptkiaSorts 

American Management Systems Inc 
American Software 
Dun and Bradstmet 
Early, Cloud and Company 
Emprise Technologies 
Inlormation Builders. Inc 
Integral Systems Inc. 

Paxus Corporation (now Continuum) 
Policy Management Systems Corporation 
PRJ&. Inc 
SAP ag 

SDM International, Inc 
Software ag ol North America 
Systematics Inc 
The Continuum Company Inc 


Syofout Sofegrciku'S and 'SSOo 

Data Sciences B V 

Science Applications International Corp 
TCAM Systems Inc 
Technology Solutions Company 

System Stanagemeni 

Boole and Babbage 
Candle Corporation 
Computer Associates Int'l 
Landmark Sysems Corp 


Af> To:: Is 

Programart Corporation 
KnowledgeWare Inc 
Seer Technologies 


ssx ssr 


IBM Capcr&Ux> 




The Four Values 

Time-Independent! Processing 

3 



One Interface Across IBM/norHBM Platform: 
























Dr. vtjay Ahuja 

Scott Baumann 
ftf' Market Plaimini j 

RIP, NO 
919-2547416 

. c k s;i t*M . m m) • 


problem! 


'C:lS-:illl,: : * $s$4M <&*£to efe<$t ta$t ysii^ 



Oom^teiworl^ ($?i 1/98): 

♦ ik>mmuric^oris- f%&ud Cartel As&oci&to: 

Ifll'l-i;::: i'iii::: • lillllQiss ^rssti^ -access fa compute. & f ^ioptaas- 

to mm4 $mM to &&; $m Worldwkto 

111 

♦ 43% w&tit 8i?i©i!$ &s$rf.Oo Network A&5&9& 


Tractertiarks 


Tire foliowieg terms ate tisMte thlr oteMte&tiCfrt add atelde '{rad^fn^rks.:': •■' 

■ imSEMim 9BHMI 

AIX/8GG0 OfOS • 

1;: OS/400 IMS " "V-i 

OS/2 CMS 

MBH|| §§g|^^ 

■ ' : 1 '' V ■ " 1 : | V’ " : jind; H le '"td< . ifks 

ofottisfCw^nfes: 

UNIX- UNIX Systeaia Laboratories 
SltiteO -. Digital Eeppment Corporatoji^li^Selvl^' Packard Co< 

SUN - SUN Mterosystems toe COS - Open Software Foundation 

Novell» Novell 


Network Security 

MaaaaaaagBasaaa^^ 

llll :; lllii ; 1:;M 

. * t SSo^togoolomuftlfSe^pBcatloos 
ii:sMfflll ; - l^soum ^ss^^exifian^ for.rpi§!|jjfex, 

* 3. Authentication 

* 4 Aueit 

* s. Bate totegi% 

lllpl- 

* 7. Authorization 

8, Access control 

§. N^ 4 ftejto<s 86 on 

lr A'CttSfeWrtSSfSSOVitoKrtotfeiife^ £ 

,. tvfultr-plalfortft: % I, D0S t UOSW, AIX iOQ8, SUN, H2) 

!!!ii!|!::ij©::i ' • si 111111111 

llltSeewfi? '•' 

IH . 



atlantaOl 

























|>Upei|oj|i^ 


AuthenticatiM: 

Server 


/\ 


Application 

Server 




Authentication 

•Server-: . : i:v;/:vj : i 


/ \ 


(gOBytes) 'Server ij| 

Router ' '. '<j g ', •:'|>i ' .l -.itouter • lilll 
Hub .; ; **• I»Ml Hub : 

^.H^'-'^^Wirelesa^ —I**: Wireless SSi^ 

/ ^-rr^ v^un, am 

; : Netw^rj^la^r-^tJtliiaiit station 



^Remote user 
'•P&Mr* user I 


- a •• 

o 


•Mthenticationi 

Servers,;-:?::::,...: 




jlfcatiort 

erver 


! t-R#f ti|ri"Q : Bnn 0 cts ' tc ■' V 

llllilli SIC liorAccessto cfient/serverA^Be^tiojns);;.-:-.x;. l£;:: 


iilliil 


itutHlriticaSoiil 
Server ^.,1 


/\ 


Client ' Application 

=~ • ’ ?.v. ;.:. Sewer ■ 


Raleigh 


Silip-i 










RAGF $§frgj§ Secure Slgn-on Ftewglll 






RACF':Siiii!eSecttre:SlifeSis’:fei.»f1fe: 
Uaafrtffly & Productivity 


q ’ pr^Sps i p&si I 

Q. U&EfttyPEfe 




:|<:: N^t ? Mffi '$? 

■. Bsg« t¥pes-.- W:i§ -X. XX S. ..: : . • ; : :; W >■ ‘ .-; : X : : • \J 

h; i <&M 


*■ aojartti 
tSO •,:: 


Wfkwsin^ear &Rrf 

*• Mb & pg£$W^<fe fey H$ 9 F 

(Sostafftae-ifet $$$m& &&#*} ;;:::::: ; :::i::;:!;::;i§s-j 

• W -eft-moas to tsustQfftef afepBoaflana <*t 3570: isfouiatofa 
*&o aee<S to fafnernbar how to asyfeats tftro -yarfoas senses 


ilsiiliil^ (NVAS) 

Products 


















* Use a sfogte API call In cpateation 
•i:"-::’:; ;; x.! Sl^ortfQf ^o*v 3£70 

i:ix-^;:!il:' : ::::i ^.-: : :i: -: :: ; i: i>:::;^:l!: : : '!; : :: :;; £p$k&tlons ' %g:i'& •ivx-'-v"' =>'.: v 3 




.■•• ■> r ■ i 


mmmmmm 


■?'■ ": •,.Jk £ -.A^VBj 


NatWare_B |§? 


. -Jofon, 


i Automatic login to servers ?•> $£&' ■;■! 

■ Password Sycrohrortlzod aceros$ sorvers 

$eoareiy 


GSS~APl Flows : 
















Back-up Capability 



B : e-SoaJing WHenfieattm Server TSsafSc 
SeoQrnmenctatkms: S 






Upgrades '&#« next ijar ol usage is easy as 1 -2-3 ' 
t. Placed® orderfor the next tier 
Z. Call the 800 nurnfoet to revive Ihe special password 

SES^ISP•".:.=•/•= S'.?^ 1 '."^W :: % ilj 















Other Neat Capabilities 



Client ... y ; . ' • 'V;;'. . -..i S-.- Client 

LogI|f ! Off i*it: 



j^^Nbtiffilcu’rl# administrator) 1 


mtmteQ?. 




jjf'fe pt^ctedbf tli@ expwfjl 




eali§ • :8O0-4|i!ll;!:::ll|:;;; 


IBMUnli 


f#t^©ildiig : Blaeprlnt’!©f ; ; ; l|ie;,|tfS : ^ : SfJfpyy 




atlantaOS 











NetSP Direction/ 


Network Security Program and DCE 

■ ■;• * til* fetsmsecurtty S % ilMISliiSv Will 


Ililli: *M8P is- IBM’s ^taeadd to the : PCE : ;pro<iucia. | J; 

• AS/400 


provides a Sinofe SeeOfe siioonto. BAOF iip;! - 



• ipl .||'v Applications s; P|§| ilgs/ . 

ISSiBBHBIiMMMHBBWMBHIi ’HBKl 1 M 


network layer 

• AS/400 


p|ff|i : || authentication |§|§§1 

j: :V; g ; ;V |{S'!' • v»• x j, + ' ' •' |;|| || : •.’• |;||''■• : ;:||| ,;.;. : Ig||f:g||||gg|•' -• • g|f%s •. •'' • |: 






IllllvifiSfel4v DOE integration ||j111 |f|II 


• • ~ Provy^.;.oallabls.sec^fi^j^iy|^S;ffe the GSS-APt 

^ leeure remote ■adminlstr^|^||i|| : |;|/:'' 






atlantaOQ 














Oney^erKI. 








TO; 

&$J2 

HIHII 

IMwa 

AJ!kfl5G^| 

llpft-!:: : ; 


RACFMVSyVM 

iMt 

CM/2 ✓ 

.; Rumba 

PC3270 ✓ 

Irma DCA ^ 

Attachmate 

PC3270 V 

Irma DCA ^ 
Attachmate V 

X3271K 

X327(K 

X327(K 


GotPasaTTckaK 

Gat_Pa83TlckeJ^ 

Qet_Pa3sTichar 

Qet_Pas3TIck8f 

GetPaasnckof 

Gat_PaaaTlckeK 

om'mmi -: : m^ 
i®ii»liiiilsil::il 

24 


N/A 

N/A 

N/A 

N/A 

N/A 

©s/2 

24 

!$!§i§S 

✓ 

✓ 

N/A 

N/A 

N/A 

ii®ii«iii 

3-^2,441 

iSS*:;: v 

✓ 

V 

N/A 

N/A 

N/A 

&S&API 
esaa&ted P-.&& 

iliiii»!iii!i 

-/ 

✓ 

✓ 

✓ 

✓ 

✓ 


K ‘ >k ^pduct III 

* =*• Sets irads awajfo&aflo &e sreHafete 




atlantal 0 





CS29 


Outline 


Sockets programming with 
IBM TCP/IP for OS/2 


Andre Asselin 
IBM TCP/IP Development 
Research Triangle Park, NC 


► TCP/IP fundamentals 

- Network addressing and domain names 

► Sockets basics 

- Stream, datagram, UDP, TCP, ports, host 
siddrsssos, b!^ 8 ©ndfiin vs. IfttSs sncJisn, clisnt flow 

► Example UDP and TCP clients 

► Socket function descriptions 

► Example UDP and TCP servers 

► Advanced sockets issues 

- Blocking vs. non-blocking sockets 

- Multithreaded applications 

- Porting and compatibility issues 


Acknowledgment 


► I’d like to thank Bill Snow in IBM TCP/IP for 
letting me use his presentation on sockets as a 
starting point for this presentation 


Your goal: to move data between 
host 1 and host 2 



A fomt Is a computer on a TCP/IP natwork 




An internet address is a 32-bit number 


32 bits — - -—| 



192 . 153 . 46 . 2 

| - T -— 

I 

nils Is called dotted decimal notation 


0xC0992E02 


Hosts are known by their Internet (IP) address 



Hosts are also known by their domain name 

















A domain name server maps a domain 
name to an internet address 





Sockets is not specific to TCP/SP 



















What's the difference between 
a TCP and a UDP socket? 


A stream is like a phone call 



TCP 

UDP 

Stream oriented? 

Ym 

m 


Moderate 

Lew 

Reliable protocol? 

Ym 

MBB. ^ 


A datagram is like sending a fetter 




Ports allow a host to separate different data 









Interesting facts about ports 


Ports fail Into three categories 


► You actually send data to a particular port at a 
given host 

► There are two sets of port numbers 

- One for TCP 

- One for UDP 

s- Because of that, to fully specify who you want 
to send data to, you need the combination 
(IP address, port #, protocol) 


► Ports 0 through 255 are reserved for official 
Internet services 

- ftp, telnet 

► Ports 256 through 1023 are reserved for other 
well known services 

- rexec, kerberos 

► Ports 1024 through 65535 are for general use 


General socket addresses 


► The sockets APS defines a data type that 
specifies the general form of an address that 
spans TCP/SP, XNS, OSt, etc. 

struct sockaddr { 

unsigned short sa_family; 
char sa_data[14]; 

} 

► sa_f amily is used to specify the type of 
address 

- examples: af_unix, af_inet, af_sna 

- TCP/SP for OS/2 only supports af_inet 

► sa_data is specific t© the type of address 


TCP/IP socket addresses 


► The sockets APS also defines a data type that 

specifies a TCP/SP address 

struct in_addr { 

unsigned long s_addr; 

}; 

struct sockaddr_in { 
short sin_family; 
unsigned short sin port; 
struct in_addr sin_addr; 
char sin_zero[8]; 

}; 

► This structure overlays the sockaddr structure 





sockaddrjn details 


The Internet standard for byte ordering is 
Big Endian 


struct in_addr { 

unsigned long s_addr; 

}; 


struct sockaddr_in { 
short sin_f amily; 
unsigned short sin_portj 
struct in_addr sin_addr; 
char sin_zero[8]? 

}; 


► sin_family specifies AF__INET 

► sin_addr specifies the internet (IP) address 

► sin_port specifies the port at that host 
*■ sin_zero should be set to 0 



Byte reordering functions 


Why are we concerned with byte ordering? 


short htons(short) 
long htonl(long) 
short ntohs(short) 
long ntohl(long) 

H n 

network to host_ _ 

host to network 


long / short 


► The s_addr member of in_addr and the 
sin_j?ort member of sockaddr_in are both 
kept in network byte order 

► Sf you assign values to these members, the 
functions on the previous page may be useful 

struct sockaddr_in server? 


For example, 
x = htonl(y) 

reorders the bytes of y into network order and stores the result in 


server o sin_f amily = AF_XNET; 
server,sin_port = htons(1492); 
servero sin_addr e s_addr = 
htonl(0x09674372); 











Functions to manipulate IF addresses 


Example of setting an IP address from a 
command Sine argument 


*inet_addr 

- Takes an ASCII IP address (i.e. "9.67.43.72") 
and translates it into an IP address 

►inet_ntoa 

- Takes an IF address and gives you back the 
address in printable format (i.e. "9.67.43.72") 

►gethostbyname 

- Takes the domain name and gives you back 
the SP address 

► gethos tbyaddr 

- Takes an IP address and gives you back the 
domain name 


struct sockaddr_in server; 
struct hostent *hp; 

/* If it’s a dotted decimal address (i.e. '9.67.44.33')/ 
inet_addr{) will convert it */ 
server.sin_addr.s_addr = inet_addr(argv[2]); 
if (server.sin_addr.s_addr == -1) { 

/* it wasn't dotted decimal -- assume it's a domain 
name (i.e. ’ software, watson. item. ccen ', and use 
gethostbyname() to convert it */ 
hp = gethostbyname(argv[2]); 
if (hp) ( 

server .sin__f amily = hp->h_addrtype; 
memcpy(fiserver.sin_addr, hp->h_addr, 
sizeof(server.sin_addr)); 

} else { 

printf("Unknown host %s\n", argv[2]); 

} 

i 


A socket is what a process uses to 

send and receive data from a port When a program first starts, it has no sockets 










So the first thing it does is it creates 
a socket with the socket 0 cal! 


St then associates the socket with a 
local port by using the bindO call 














When it’s all done, socloseO is used to dissolve 
the connection and destroy the socket 


Overview of a client program 


i \ Initialize sockets library 

; Connect the socks 

i 

! a remote server p<i 

/ ^ 

V / 

V._ 

| sock_init() | 

I 

t 

I connect() 

i 

*“ T* 

(a i cp/ip network! 

) (an internet) J 

server 

Create a socket 

socket ( ) 

J __ 

Transfer the data 

send() / sendtoO 
recv() / recvfromO 

- 1 



r ^ 

! Bind the socket to a 

i | 

| local port 

_?_ 

Close the socket 



! bind () ; 

soclose () 



r _ 

1 

example TCP client 


6 

An example UDP client 


int main(int argc, char **argv) 
int tcp_socke t, rc; 
unsigned short port; 
struct sockaddr_in server; 
char buf[32]; 
chair *server_address; 


int main(int argc, char **argv) [ 
int udp_socket, rc; 
unsigned short port; 
struct sockaddr_in server; 
chair buf [32] ; 
chair * s erver_addres s ; 


rc = sock_init () ; 

server_address = argv[l]; 
port = atoi(argv[2]); 

tcp_socket = socket (AF_INET, SOCK_STREAM, IPPROTO_TCP); 


rc = sock_init() ; 

server_address = argv[l]; 
port = atoi (airgv [2] ) ; 

udp_socke t = socket (AF_INET, SOCK_DGRAM, IPPROTCMJDP) ; 


memset(Sserver, 0, sizeof(server)); 
server . s m_f amily = AF_INET; 
server.sin_port = htons (port); 

server . s in_addr . s_addr = inet_addr ( server_address) ; 
rc = connect (tcp_socket, Sserver, sizeof(server)); 

strcpy(buf, "Hello World!"); 

rc = send( tcp_socket, buf, strlen(buf)+1, 0); 
soclose (tcp_socket); 


memset(Sserver, 0, sizeof(server)); 
server.sin_family = AF_INET; 
server.sin_port = htons(port); 

server.sin_addr.s_addr = inet_addr (server_address); 
strcpy(buf, "Hello World!"); 

rc = sandto (udp_socket, buf, strlen(buf)+1, 0, Sserver, sizeof(server)); 
soclose (udp_socket); 

















Error handling 


sock_lnit() - initialize the sockets library 


Most sockets calls return -1 to indicate an error 
occurred 

sock_ermo () will return a code to indicate the 
cause of the last error 

- nerrno.h defines the error constants 

► SOCEWOULDBLOCK, SOCEALREADY, etc. 

- The error constants have SOC prefixed onto 
them to avoid naming conflicts with C/Set 
error constants 

- sock_errno () is thread safe 
psock_errno () will print a message to stderr 
indicating what error occurred 


Syntax: 

int sock_init(.) 

Return Values: 

- 0 = success 

- 1 = error 

► NOTE: an error is signaled by a return value 
of 1, not -1 like most other sockets calls 

► Most probable cause of error: INET.SYS not 
loaded 

► sock_errno () is not set by this call 
Must be called before any other sockets 
function 


socket() - create a socket 


socket() - create a socket 


Syntax: 

int socket(int domain, int type, int protocol) 

Parameters: 

-domain - addressing domain 

► must be af_inet 

- type - type of socket 

-SOCK_STREAM 

• SOCK_DGRA»«- 

► SOCK_RAW raw socket (not discussed here) 


-proto col —wtHeh ^roteeeHo use 


> o 

* IPPROTO_UDP 
- IPPROTO_TCP 


default protocol based on type 
sock_streanri —IPPROTO_TCP 
sock_dgram —PPRGTOJJDP 


► Return Values: 

- -1 = error 

- anything else = socket handle 




bin dQ - bind a socket to a local port 
Syntax: 

int bind(int socket, struct sockaddr *name, int namelen) 

Parameters: 

- socket - socket to bind 

-name - Soca! IP address and port to bind to 

► Points to a struct sockaddr_in 

► If name - >sin_addr. s__addr == 
inaddr_any, then the socket is bound to 
any of the host's IP addresses 

► If name ->s i n p ort == 0, then the socket is 
bound to any free port 

-namelen - length of name 
Return Values: 


connectO - connect a socket to a server port 
Syntax: 

int connect(int socket, struct sockaddr ‘name, int namelen) 

Parameters: 

- socket - socket to bind 

-name - remote IP address and port to connect 
to 

- points to a struct sockaddrJn 
-namelen - length of name 
Return Values: 

- 0 = no error 

- -1 = error 


bind() - bind a socket to a local port 


► Only necessary If 

- you're frying to receive information and you're 
not going t© do a connect () or send* () 
first (they automatically do a bind) 

_ %mai paro laibi^b rmrt vmi canrfi/rocohm wry ir 

- jr ^9 <fe«S 'Ca?Sfe<a B V «f»BBB'W»BB gfeC B a g "to* * ■ '***! B >*0 S w W JJ -«» ■ 

data on (Le. if It's a server program) 


Which data transfer calf should you use? 



send / recv 

sendto / recvfrom | 

wrltev / ready | 

- m — 

m 

E 

> 

o 

Q 

Sbb 

m 

w 

E 

-a 

c 

m 

m 

Number of buffers 
(S=SBogl@, M=multiple) 

S 

S 

M 

M 

Additional options flags 

Y 

Y 

N 

Y 

Any socket / 

Connected socket only 

C 

A 

C 

A 

Server address a paramefc 

N 

Y 

N 

Y 



What use is multiple buffers? 


1000 

1010 ! 



3030 


Suppose you want to send the 
data at address 1000 then the 
data at 3000, then the data at 
2000 


Sending data using memcpy () 
and one single buffer call 



3000 


4040 

4045 


Sending data using multiple single buffer calls 


You can send the data using 
three singie buffer calls 

send(socket, 1000, 10); 
send(socket, 3000, 30); 
send(socket, 2 000, 5) ; 

2000HHHH 

200s| 

aooo^BHj 


3030 


1000 

1010 


Sending data using a multiple buffer call 



3030 


writev(socket, &iov, 3) 


















recv(), recvfromO, readv(), recvmsgO - receive data 


recvQ, recvfromO, readvQ, recvmsgO ■ receive data 


► Syntax: 

int recv(int socket, char *buffer, int buflen, int 
flags) 

int recvfromdnt socket, char *buffer, int buflen, int 
flags, 

struct sockaddr *name, int *namelen); 
int readvdnt socket, struct iovec *iov, int iovcnt); 
int recvmsgdnt socket, struct msghdr msg[], int 
flags); 

> Parameters: 

- socket - socket to receive data from 
-buffer - buffer to hold incoming data 
-buflen - length of buffer 

- flags - flags for the receive call 

» 0 - Normal read operation 

- MSG_PEEK - Read the data but don’t remove it 

► ySG_OOB - Read out-of-band data (not discussed) 


send(), sendtoQ, writevQ, sendmsgQ - send data 


► Syntax: 

int send(int socket, char *buffer, int buflen, int flags) 
int sendtodnt socket, char *buffer, int buflen, int flags, 
struct sockaddr *name, int *namelen); 
int writevdnt socket, struct iovec *iov, int iovcnt); 
int sendmsgdnt socket, struct msghdr msg[], int flags); 

Parameters: 

- socket - socket to send data 
-buffer - buffer that holds outgoing data 
-buflen - length of buffer 

- flags - flags for the send call 

> 0 - IMormaS send operation 

„ MSGJDONTROUTE - Turns on the SO_DOMTROUTE 
option (see setsockopt ()) 

- i$SG_OOB - Send out-of-band data (not 

discussed) 


► Parameters (continued): 

-name - remote IP address m<& port that sent the data 
* points to a struct sockaddrjn 
-namelen - length of name 

- BUG Watch: if this parameter is MULL, the system will trap 
under GA & GSD1 - CSD 2 fixes it 

- iov - array of buffers and lengths 

- iovcnt - number of entries in iov 

-msg - array of buffers and lengths plus an optional field to hold 
the address of the machine that sent the data 

> Return Values: 

- 0 = connection is closed (connected socket only) 

- -1 = error 

- anything els© = number of bytes received 


sendQ, sendtoQ, writevQ, sendmsgQ - send data 

► Parameters (continued): 

_ name - remote IP address and port to send the data to 
► points to a struct sockaddrjn 
-namelen - length of name 

- iov - array of buffers and lengths 

- iovcnt - number of entries in iov 

-msg - array of buffers and lengths plus an optional field 
to hold the IP address and port to send the data to 

► Return Values: 

- -1 = error 

- anything else = number of bytes sent 

► MOTE: This can return SOCEWOULDBLOCK 





sodose - destroy a socket 


► Syntax: 

int soclosednt socket) 

► Parameters: 

- socket - socket to destroy 
» Return Values: 

- 0 = success 

- -1 = error 


A UDP server example 


main(int argc, char **argv) { 
int udp_socket, rc, namelen; 
struct sockaddr_in client, server; 
char buf[32]; 

rc = sock_ird t() ; 

udp_socket = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP); 

memset(Sserver, 0, sizeof(server)); 
server.sin_family = AF_INET; 
server.sin port = 0; 

s erver.sin_addr.s_addr = INADDR_ANY; 

rc = bind(udp_socket, Sserver, sizeof(server)); 

namelen = sizeof(server); 

rc = getsockname(udp_socket, Sserver, Snamelen); 

printf("Port assigned to server is %d\n", ntohs(server.sin_port)); 
namelen = sizeof(client); 

rc = recv£rom(udp_socket, buf, sizeof(buf), 0, Sclient, Snamelen); 

printf("Received message '%s‘ from IP addr %s, port %d\n", buf, 
inet_ntoa (client. sm_addr) , ntohs (client .sin_port)) ; 


Overview of a UDP server program 



Overview of a TCP server program (1) 





















Overview of a TCP server program (2) 



SistenQ - prepare a soc ket to receive connections 

► Syntax: 

int listen(int socket, int backlog) 

► Parameters: 

- socket - socket to bind 
-backlog - size of queue for incoming 

connections 
» Return Values: 

- 0 = no error 

- -1 = error 


A TCP server example 


Int main(int argc, char **argv) { 

int tcp_socket, session_socket, rc, namelen; 
struct sockaddr_ln client, server; 
char buf [32]; 

rc = sock_init () ; 

tcp_socket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); 
memset(&server, 0, sizeof(server)); 
server.sln_port = 0; 

se rve r.sin_addr.s_addr = INADDR_ANY; 

rc = bind(tcp_soeket, sserver, sizeof(server)); 

namelen = sizeof(server); 

rc = getsockname (tcp_socket, sserver, snamelen); 

prlntf("Port assigned to server Is %d\n", ntohs(server.sin_port)); 
rc = listen(tcp_socket, 1); 
namelen = sizeof (client); 

session_socket = accept(tcp_socket, sclient, snamelen)? 
prlntf("Connected to IP addr %s, port %d\n", 

inet_ntoa(client.sln_addr), ntohs(client.sin_port)); 

rc = reev(session_socket, buf, sizeof(buf), 0); 
prlntf("Received message *%s'\n", buf); 

soclose(sesslon_socket); 
soclose(tcp_socket); 


acceptQ - wait for a client to connect 


► Syntax: 

int accept(int socket, struct sockaddr *name, int namelen) 

► Parameters: 

- socket - socket to bind 

- name - remote IP address and port of new 
client 

► points to a struct sockaddrjn 
-namelen - length of name 

► Return Values: 

- -1 = error 

- anything else = socket handle of new client 
connection 








Blocking vs. non-blocking sockets 


Using multithreading in a sockets program 


► A socket can be in either of two modes: 
blocking or non-blocking 

► Sockets start out as blocking 

► Two switch between the two modes, use 
ioctl(sock, FIONBIO, ...) 

► An example to illustrate the difference: 

- Suppose you have a socket that has no data 
waiting for you to read 

- Sf you issue recv ( ) on a blocking socket, you 
will not get control back until data arrives on 
the socket 

- If you issue recv { ) on a non-biocking 
socket, you will get control back immediately 


► It's simple: just start more threads as you need 
them and have them issue sockets calls 

► sock_ermo () will return the last error code 
that occurred in the current thread 

► One caveat- only the following sockets calls are 
reentrant 


- accept 

- listen 

- soclose 

- bind 

- recv 

- sock_errno 

- connect 

- recvfrom 

- recvmsg 

- gethostid 

- select 

- sendmsg 

- getpeername 

- send 

- readv 

- getsockname 

- sendto 

- writev 

- getsockopt 

- setsockopt 

- shutdown 

- ioctl 

- socket 

- psock_errno 


Porting considerations 

► On the whole, the sockets API on OS/2 is very 

compatible 

► Specific things to watch for: 

- The ioctl () and select 0 calls have a 
different syntax 

- Sockets are not file handles like on UNIX 

- Sockets are global across the system, and are 
not inherited by child processes like file 
handles 

- Constants for error codes are preceded by 
'SOC 

- Use sock_errno ( ) instead Of errno to 
retrieve the cause of the last sockets error 


interfacing with INETD (TCP apps) 


► Add your program to INETD.LST 

► When your program is executed, it will receive 
exactly 1 parameter- the socket it should use 

► Do the normal sock_Jnit() 

► Call addsockettolist (socket) , where 
socket is the socket number you were passed 
on the command line 

- This associates the socket with your process 
instead of INETD so that the sockets library 
will do clean up properly 

► Do your processing 

► Do a soclose() before you terminate 




Ring 0 interface 


* The S032DLL.DLL and TCP32DLL.DLL can only 
be used from ring 3 (regular user) applications 
*. There SS a ring 0 interface to TCP/IP 
► It consists of a subset of the functions that are 
in the 'reentrant’ list 

Contact IBM if you need to write a ring 0 
sockets application 





CS30 


Outline 


ONC RPC programming with 
IBM TCP/IP for OS/2 


► Description of RPC 

► RPC concepts 

► Programming for RPC 


Andre Asselin 
IBM TCP/IP Development 
Research Triangle Park, NC 


_ What is ONC RPC? 

► ONC stands for Open Network Computing 

► RPC stands for Remote Procedure Call 

► RPC is a high level interface that lets you 
send/receive data between computers 

► There are other, incompatible, versions of RPC 
(DCE RPC is a popular one) 

► RPC uses another Interface called XDR 
(external Data Representation) 

#. One widely used protocol built on top of RPC" 
Sun's NFS (Network File System) 


RPC is a layer on top of Sockets 



Andre Asselin 
08/08/94 


Page 1 









RPC concepts 


Programs, versions, and procedures 


► The concept behind RPC is that when you need 
to communicate with another machine, you 
Invoke a procedure that executes on the remote 
machine 


► To make sure you Invoke the right procedure, 
RPC groups procedures Into programs 

► Each program also has a version associated 
with It so that you can upgrade the protocol and 
not worry about backlevel clients 

► To specify which procedure you want to invoke 
on a server, you have to specify a combination 
of (program #, version, procedure #) 


-f- 




... yyyy ■ yy; :xyyy yyyyy 




client 



^ f" ^ 


server 


XDR 

XDR is used to specify the format of the data 
that is transmitted over the wire 
it defines types for 

- Integers (long and short, signed and 
unsigned) 

- character strings 

- arrays (fixed and variable length) 

- struct's 

- discriminated unions 

- enum’s 

- booieans 

- opaque data (fixed and variable length) 


XDR language & RPCGEN 


► XDR defines a language that's used to specify 
new protocols 

► To make RPC programming easier, a program 
called RPCGEN wiil generate stub files for both 
client and server with all the correct calls 

► To use RPCGEN, you create a *.X file using the 
XDR language that contains a definition of the 
protocol you're creating, and then run ft through 
RPCGEN 

► (see MYPRINT.X) 






Output ©f RPCGEN 


Typical RPC client flow 


► If you run the previous .X file through RPCGEN, 
you'SS get 

- MYPRINT.H - header file for C data types and 
generated procedures 

- MYPR!NTC=C - client side stubs 

_ hyprints o c ~ ssfvsf side main program 

- MYPRSNTX.C - XDR routines for new data 
types 

► The client side is going to need some 
initiaiization routines 

► The server side needs you to create procedures 
t© handle each of the calls 

► fsee MYPRINT*\ 


7 

clntudp_cr@ate 

einttcp_crea£e 


i _, 

i 

autfinon@_cr@at4 

authuniix_er@ate| 


PORTMAP 


► RPC programs don't have to be on a specific 
port 

► To find an RPC program on a server, the server 
runs a program called PORTMAP which takes 
the program and version you want and returns 
the port number the program is listening to 

► This mapping is done during clnt*_create () 
if you specify 0 for the port number in the host 
address 

► PQRTMAP uses port 111 


clnt_call 

_jL 


ayth_destroy 

clntjdestroy 


Andre Asselin 
08/08/94 


Page 3 










DB01 


5T5* ^ 1 W mm ' m r m Vg a *i g"% s 2 as s 

UD4'£. L.H I O UC I OIVlALL. 

Dan S. Britton 
IBM Canada 
Database Technologies 


Why_ Migrate to DB2 Cjjent/Server? 

Price/Performance 

b Processing power of workstations for low cost 

■ Cost per transaction 

■ LAN-based resource sharing 

New Technology 

is Newer, more robust OS, applications and tools 

■ Approaching 24x7 availability of workstations 

Platform Independence 

■ Move work to less expensive, common platforms 
« Move data to where needed 

a Support of more "open" environments 

Human Resources 

» Utilize existing skills across multiple platforms 


Dopyrqtit fd 1904 6M CorpjaiDo 


lufuQUciion 


When to Migrate to DB2 Cjjent/Server 

Hardware 

■ Pending processor upgrade or more DASD 

■ Available workstation hardware 

Software 

a Significant new development of applications 

■ End-user requirements 

Financial 
» Business case 

« Market for applications on smaller, open platforms 















GOTCHA!! ___ 

Systems Management 

® Not all functions may be available on workstation 
a Not all tools may be available on workstation 

Skills and Resources 

■ Technical skill needed to support LANs, workstations 
Conversion Costs 

■ Applications may need to be rewritten or redesigned 
a Support of dual, multiple different platforms 

■ Exploitation of each platform or support of all 

Performance Requirements 
a High end OLTP applications 
* Centralized storage of data 
a Continuous operations and high availability 

CojjjrfJgbt fCJ 19M 6 M Corponttxi 




Migration Considerations 






























Cooperative Processino Scenario 

HOST 


JD.”1 





Terminal or 

Host 




\ 

1 

/\ 

i 



n^xvx ivXvx 

m 

i 

L 

WORKGROUP 

Wth 


/ 

LAN 



I 


CSent 


Seiver 



msm. 

Client 



Copyright fc| 1KMBM Corps a ton 






Downsizing Scenario 




Client 


Where Should You Place The Data? 


Performance Considerations 

Factors to Consider 


Factors to Consider 

■ Performance 


- I/O 

■ Availability 


* Network 

■ Remote Data Manipulation 


» Number of Users 

a Security 


® Utilities 

■ Concurrency and Consistency 


a Application Design 

a Data Owner Preference 


a Traditional Design Issues 

® Skill and Experience of Support Personnel 
■ Relational Software Constraints 






















Host Performance Issues 


Client/Server Performance issues 

Getting Database Design Correct 


Network Performance 

■ Logical Model Flexibility 


■ 9.6KB vs. 56KB vs. 16M vs Fibre Optic 

■ De-normalized Perfomance Gains 


Number of Message Pairs per Transaction 

Generating Efficient SQL 


Performance Characteristics of Target Platform 

Tuning Environment Parameters 


Plus Traditional Design Issues 

lSM 8M Ccrpo «Uon 


Copyright (ci 19EM 6M Corpo*»tton 


Design Techniques for Performance 
Startup 

b Retain connection between transactions 

► Saver: message pairs 

► Saves connection processing 

► Server memory allocation for idle connect 

SQL 

■ Use Static SQL wherever practical 

► Saves Dynamic Bind and aulh chocks 
® Use blocking for all cursors 

► SQL statement performance 

► Saves a lot of network traffic 

■ Avoid redundant SQL calls 

■ Use Joins where possible 

► DBMS oar; join more evidently than application 

► Saves network traffic 


Design Technigues for Performance _ 

SQL 

■ Select only rows and columns that are needed 

► SELECT * from 200 million row table is not good 

® Use database Rl, instead of application Rl check 

► Database Rl applies to ALL processes that use database 

► Saves extra message pair 

■ Consider local data copy for non-volatile reference data 

b> Saves network traffic 

* Use DARI 

► Performance of server vs. client 

► Saves network traffic 

* Use Compound SQL (available in DB2/6000) 

► Simple to code 

► Saves network traffic 










Security - Connectinct to the Database 


Security - Access within the Database 

Connection Considerations 


Priviledges and Authorities 

■ Consider Design and define security strategy 


■ similar for DB2, DB2/2 and DB2/6000 

*=> Platforms 


■ CONTROL priviledge new for DB2/2 and DB2/6000 

e** Existing or new applications 


► Provides user wish control over DB objects 

► Existing security standards 


► ALL priviledges are provided 

► Integration oi existing database environments 


► Creator uripiic-i-y receives CONTROL pr-visecige 

► Location oi data 


► Revoke of CONTROL does net cascade 

a UbfcRlU and PASSWORD required 


» Revoke of GRANT priviledge in DB2 does cascade 

^ DB2/2 uses User Prome Management 

► UO/?.' O'A-'O C’SOS At A oO’-yiJi ::y Vyk-M nTo: 

► DB2 uses RACE (or equivalent) 

■ Mixed Environment 

fv Coordination of USERID and PASSWORD a must 

► Products like Signon Coordinator/?, help 

Copyright (c) 1SW BM Corponton 


CofyrJgm (ci t99< BM Cwpo«tDn 


Backup and Recovery Considerations 

Have a Backup and Recovery Plan 

■ Procedures 

■ Resources 

Utilize product specific capabilities 

* DB2/6000 (VI) - Online backup 

■ DB2/2 (VI.2) - Quiesce Database 

Utilize Roll forward capability 

« Restore copy of backup and roll forward 

Store backup and logs on a separate devices 

■ Different hardfile 

■ Different Server 

■ Host 


Sofyrigrit ,-ci 13M BM ~orpo«tbn 

































DB2 

■ EBCDIC 

DB2/2 and DB2/6000 

* ASCII 

Sort Order 

* Collating is different 

■ Use COLLATE parm of CREATE DATABASE 
□DCS will handle conversions automatically 


Differences in how data is physically stored 
- In DB2 



« In DB2/2 and DB2/6000 
















Data Migration - Roll Your Own 



Data Migration - Bridge Fasthacj 



Server 



Data Migration - Too/s Summary 

IBM Family... 

■ DDCS 

■ DB2 C/S Utilties (IMPORT and EXPORT) 

■ DataHub 

■ DataRefresher 

» DataPropagator/Relational 

...and Friends 

■ Bridge Technology 

■ Data Junction 

■ DBAPort 

■ Platinum Data Transport 

■ Data Base Converter 
a SQLAssist 





































DBMS Infrastructure 

Database System Catalogs 

■ SYSIBM as qualifier 

h DB2/2 and DB2/6000 catalogs a subset of DB2 

■ Use views to mask differences 

Locking and Concurrency 

■ DB2/2 and DB2/6000 have row-level locking 

■ DB2 has page-level locking 
» Isolation levels 

► All support Cursor Stability and Repeatable? Read 

► DB2/2 and 082/6000 support uncommitted read 

Referential Integrity 

■ Unique Index created for primary key 

► Automatic for DB2/2 and DB2/SGQ0 

► Manual (SQL) tor D82 


Some DBMS Limits 


Feature 

DB2 

DB2 C/S 

■ Longest host identifier 

64 

30 

« Max length VARCHAR 

32704 

4000 

0 Max length VARGRAPHIC 

16352 

2000 

■ Max columns in table 

750 

255 

■ Max columns in view 

750 

255 

® Max columns in index key 

64 

16 

■ Max # host variables 

storage 

880 

■ Max declared cursors 

storage 

400 

Reference: FRED, Table 10 

(SC26- 33 

16) 


SQL Considerations 


SQL Considerations 

Data Manipulation Language 


SQLCODES 

* Very similar across platforms 


* Not consistent across platforms but similar 

■ SAA SQL most similar 


■ DDCS remaps SQLCODES 

Data Definition Language 


SQLSTATES 

® DB2/2 and DB2/6000 almost identical 


■ ANSI Standard 

■ DB2 different from DB2/2 and DB2/6000 


■ more general, but identical across platforms 

■ Object names vary widely 


Connect 

Data Control Language 


« All support SQL CONNECT AND CONNECT RESET 

■ Same concepts across platforms 


a DB2/2 and DB2/6000 support implicit connection 

■ Differences in granularity of authority 


« DB2/2 continues to support START/STOP command 


i 










Static SQL 

* Better performance 

■ Simpler to code 

■ Fewer runtime authorization issues 
- can be EXPLAINed 

« Less network traffic 

Dynamic 

a Simplifies development environment 

■ Removes Static SQL “fixed format” constraint 
® Can use PUBLIC authorizations 


DARI and CU 


DARI 

■ Database Application Remote Interface 

■ "Stored Procedure" 

* DLL if: OS/2 

► Loadable Modi-la in AIX 

■ Reduces network traffic on LAN 


■ Gal! Level Interface 


















Precomgilation Considerations _ 

Qualifying Table Names 

■ Use unqualified SQL in programs 

■ DB2 supports Synonyms and Aliases, Bind Options 

Can explicitly define ihe -able qualifier 
* DB2/2 and 082/6000 do no! support these op-ions 
» Create View in DB2/2 and DB2/8000 

► Must be GRAMTed priviledge of base tables 

Binding 

» Objects must exist for prep on DB2/2 and DB2/6000 

■ Bind during Prep or defer Bind 
a DB2 can Bind with Owner= 

■ DB2/2 and DB2/600Q do not support concept of Plans 

► Packages can consist of multiple Plans 


Copyright fC) 1904 BM Corporatbn 


Program Pregaratign Steps 



Copyright (o 1904 BM Corpoatbn 



Deyelogment Tigs _ 

SQL 

* Use SAA SQL 

a Use unqualifed SQL 

■ Use explicit CONNECT 

Development Process 

■ Create portable code modules 

* Share modules where possible 

® Use Rexx or shell scripts to change syntax 
► BEG IN/END SQL vs. BEG! N/: SQL 

■ Define naming standards 

■ Private vs. Public build environments 

■ Change Control 


Copyright (C) 1904 BM Corpnatton 






























Managed Care and Employee Benefits 
a Administrator accesses on-line information 

Process requests 
Various sources 

Database detail 

■ 500MB Database on Server 

■ 110 OS/2 Clients 

■ DDCS/2 attached to 8 of 14 DB2/MVS subsystems 


HOST 


Terminal or 
Workstation 


Hosl 



Reasons for Downsizing 

Performance 

a Dramatically reduce "average speed to answer" 

so Average response lime : 2 seconds 

Cost 

■ Attain reduction (80%) in CPU cost per call 
Programming 

* Utilize existing programming skills 

■ DB2/2 synergy with existing DB2/MVS 

Cost of Training new administrators 
» Provide more intuitive GUI front end 
a Decrease training time 

6-8 weeks down to 2-3 weeks 














Portability Issues 


Telecommunications Company - Case Study 


HOST 


WORKGROUP 

LAN 



JQ~ 

Terminal or 
Workstation 


mmmm 



-3888S8& 

Client 



Applications 


Reasons for Downsizing 

Cali Processing 


Marketing of Application 

■ Switching equipment feeds database 


■ Few potential customers would need host capacity 

■ Monthly billing runs are executed against database 


a Migration to smaller platform needed 

OLTP for Call Records 


Performance 

■ Data available to provide billing assistance 


a All customers would need host level of performance 

* User caiis to inquire about a particular call record 


Cost 

Billing operator pulls up cai! detail 
► May or may not make change to database 


■ Needed affordable solution for re-selling 

Database Detail 


Scalability 

■ Utilized 4-6 gigabyte database 


■ Customer wanted a scalable solution 

■ 50 tables and approximately 4 million records 


■ Ability to migrate to other platforms if needed 



Programming 

■ Eliminate/reduce dual maintenance 
* Utilize existing programming skills 










Portability Issues 


References 


JCL 

■ Not supported on DB2/6000 

« Necessary to write shell scripts to emulate JCL 

SQL 
- DML 

s- DIGIT scalar function not supported 
Had to write conversion routine 

■ DDL 

& Hod to vvtHo scripts to remove extensions 

Utilities 

■ No equivalent of DSNUTILB 

5 - Had to write 2 process coavereion/load uliiity 

Data Conversion 

■ Utilized Data Junction and Bridge Fastload 


DB2 C/S Family Downsizing Considerations Paper 

■ Go to demo area of this event for a copy 

* IBM: Request LIST from DB2INFO at TOROLAB2 

FRED 

* order # SC26-3316 
SupportPacs 

s Contact IBM for information 

* (list in handout for DB2/2: Family & Friends) 

Customer FTNs and videos 

* List of FTNs and videos available from DB2INFO 

■ Contact IBM 


IF ALL ELSE FAILS: 
* Call me 


































m v.0 


« DB2/2 Available since May 1983 



® DB2/6000 Available since November 
1993 


00 Independent 
oftware vendors 



DB2/2 Worldwide Salsa 


80.000 

: _ 




JK 


40 000 

w 



- 






m .. 



ui JU Aug Sop Oct Nov Doc Jan FoD Mar | 



® Regulatory Reporting 
• 3 RS/6000 Servers Model 550 

® Move Daily Updates from IMS to DB2/6000 using Bridge Fastload 


® Perform Nightly, Weekly, Monthly Reporting to SEC 

Benefits 

• Smooth Migration from DB2/MVS 

• Preserved Investment in DB2 Skills 

• Improved Performance of Reporting Application 
















- 

2/2 SERVER 
DDCS/2 



• Managed Care and Employee Benefits Application 
® 500 MB Server 

® 110 OS/2 Clients 

m DDCS/2 active on 8 of 14 DB2/MVS subsystems 

Benefits 

• Dramatically Reduced "average speed to answer" 

9 Training time decreased from 6-8 weeks to 2-3 weeks 

• 80% reduction in CPU cost per call 
® Average response time: 2 seconds 

<§ DDCS/2 provides an architecturally clean, cost effective gateway 





System 
500 GB 


nnan nnnn 
ants Eianaa 


Application 

• Direct Marketing 
©Target Market Identification 

Objective 

• Reduce Market Identification from 14 Hours to 

15 Minutes 

® Analyze Entire Market 


PQWERPara!!e!/DB2 
64 Nodes 
900GB of Data 






-— — -- -- - -—■— -——— agj 

® DB2/400 ~ 


m Functions 

• DB2/2 VI .2 



« DB2 Client Enabler VI .2 


* iUUi.W.; 

® DB2 For HP-UX and DB2 for Solaris 


*'* •” v: v: ’ ■■■ 

m DB2 V2 For OS/2 and AIX 


............... ^ 

® DB2 Parallel Edition for Power Parallel 


... p-xno^r:::;^ 

® Visual izer 


TV • 

# Datahub 



* DataPropagator 



m Tradewinds 


@ Available 08/94 



_ 



























Availability 

e> Increased Granularity for Backup 
Restore 

Performance/Scalability 
® Enhanced Media Spanning 

• Hyper Load 
© SMP Exploitation 
m STAR BURST Optimizer 

• Parallel Database 
SQL Functionality 

9 OO Extensions (BLOBs, UDFs, UDTs) 
® Triggers 
® SQL 2 

@ More DB2 Compatibility 


Connectivity 

® DRDA DUOW (Two-Phase 
Commit) 

® DRDA Application Server 
Support 

m Replication Services 
9 IPX/SPX 

Open Standards Support 
9 DCE 

® XA Enhancements 
9 Call Level Interface (ODBC, CLI) 
DBA Tools 

• Visual Explain 

• Performance Monitor 




9> Select, Insert, Update, Delete 

► Aggregate Functions 

► Index Scan, Table Scan 

► Sorts, Joins 

b* Table Create, Data Load, Index Create, Runstats, Reorganization 
&>Node Rebalancing, Backup/Restore, Forward Recovery 

8» Scaleable PowerParallel SP1, SP2 
LAN connected RISC/6000, PowerClusters, HACMP 

* Pricinq - Node and User based 



® Persona! Application System, Query/6000, 
Tradewinds 


m VisualAge 








m c/3 



































# Toois to monitor status, display objects, copy objects 
$ Mask RDBMS Differences where Desirable 
$ Provide Consistent Graphical User Interface 


IBM Devekwnr ir^nxmts -^ 

» Significant investment m Many Key Areas 























@ r’enorrnance 


« More object support 

* Increased storage limits 
® Additional SQL Enhancements 


® Concurrent release on all platforn 



* SQL 


► FIPS 

► ANSI 

► ISO 
• DCE 

® Call-Level Interface 















* Datahub enhancements 


► Adminstration 

► Copy Management 

► Data Replication 

$ Continue focus on DBS v 
w System fvianaQemont 


® Database Administration 


• DBA Tools 

BRIDGE/MONITOR for DB2/6000 
Osrm2 Performance and Capacity System 

DataHub 

ProductManager/6000 

ProSoft 

RemoteControl/2 

DBEditor 

Information Engineering Facility 

PM/FOCUS 

Speedware/Designer 

TechBridge Builder 

VISION/4GL 

WINDOW/4GL 












Bndge/Fastload 
Data Hub 
DBAPort 

Platinum Data Transport 
Software Reengineering Tool 
The Data Base Converter 

ANSWER :ZIM 
Data lens 
DBEditor 

Distributed Application Environment 
GM l/AGS Solution 

Metaphor Data Interpretation System 
OEC Toolkit 
PowerBuilder 
ProductManager/6000 



Forest & Trees 
Impromptu 2.0 C 
InfoPump 

iXOS - Framemerger 
iXVIEW/SQL 

Metaphor Data Interpretation System 

Micro Focus Host Compatibilty Option 

Personal Application System/2 

PLATEAU - dynamic DB 

PM/FOCUS 

PowerBuilder 

ProductManager/6000 

Q+E Database Library 

Query/6000 

Quest 

ReportSmith 



SAS/ACCESS Interface 
Select Executive 
SEQUELINK 
Speedware/4GL 

SQL Objects ++ Database Class Library 

SQLAssist 

TechBridge Builder 

VISION/4GL 

WINDOWS/4GL 

XDB-QMT 

4S-Report 


Data Hub 

Micro Focus Host Compatibility Option 

Remote Control/2 

SQLAssist 








DB2/2 trends 





@ Development Tools ^fr 

DataHub 



DBAPort 


Data Asset Manager - Data Adminstration 

Distributed Application Environment 


Database Application Framework Class Library 

OASAS 1 for OS/2 Version 2.0 


Development Asset Manager - CASE Tool Integration 

RemoteControl/2 


Information Engineering Facility 



INNOVATOR 

DataHub 


PACBASE Series 



PI ATFAU - Anness Control Svstem 

IVUCOi f~UUUc> / /udt LA,// / ij~/cUiUniiy 

RemoteControl/2 


PLATEAU - Application Development Platform 

SQLAssist 


PLATEAU - dynamicDB 

PLATEAU - Message Handling System 

PLATEAU - OOTDI 

PM/FOCUS 

Strategic Asset Manager - Enterprise Analysis 

WATCOM FORTRAN 77 32 



WATCOM VX*REXX 



Database Application Framework Class Library 

DBAPrep 

DBATool 

Information Engineering Facility 

INNOVATOR 

JCL Navigator 

KASE : VIP for Presentation Manager 

Legacy Asset Manager - COBOL reverse Engineering 

Micro Focus COBOL Workbench 

Micro Focus Host Compatibility Option 

Open + Engine 

PACBASE Series 

PLATEAU - Application Development Platform 

PM/FOCUS 

Super NOV A 

Uniface 



WordPerfect InForms 


AM (Applications Manager) 

AM SQL/Workbench 
ANSWER :ZIM 

Database Application Framework Class Library 
Distributed Application Environment 
iXOS - Framemerger 
PACBASE Series 

PLATEAU - Application Development Platform 

PowerBuilder 

Query/6000 

SQLWindows 

Super NOVA 

TechBridge Builder 

The SAS System 








Uniface 
Visual Age 

WATCOM FORTRAN 77 32 
WATCOM VX*REXX 
4S-Report 

ANSWER :ZIM 

Database Application Framework Class Library 

Open + Engine 

PLATEAU - OOTDI 

PowerBuilder 

ProductManager/6000 

Speedware/Designer 

SQLWindows 

SuperNOVA 

TechBridge Builder 


PACBASE Series 

Platinum SQL-EaseAA/orkstation 

PowerBuilder 

Speedware/Designer 

Speedware/4 GL 

SQLWindows 

SuperNOVA 

TechBridge Builder 

The SAS System 

Uniface 

VISION/4GL 

VisualAge 

Vortex 

WATCOM FORTRAN 77 32 
WATCOM VX*REXX 
WINDOWS/4GL 


VisualAge 

WATCOM FORTRAN 77 32 
WATCOM VX*REXX 
WordPerfect In Forms 
4S-Report 

AM (Applications Manager) 

AM SQL/Workbench 
ANSWER :ZIM 
Commander ADL 

Database Application Framework Class Library 

Information Engineering Facility 

JAM Family of Development Tools 

Natural for DB2 

NOMAD for Extended 

NOMAD for OS/2 


YC-Extract 

CLIO 

Query/6000 
VISION/4GL 
WordPerfect InForms 


APMpower Application Performance Analysis System 

EZ-FILES for CICS 

Micro Focus COBOL Workbench 

Micro Focus Host Compatibility Option 

Platinum SQL-Ease/Workstation 

ProductManager/6000 

SQLWindows 

Testing Made Easy 

Com Trac 

ControlFirst 










CustomerFirst 

Manage-it 

ProSoft 


APMpower Application Performance Analysis System 

CMVC/6000 V2R2 

Distributed Application Environment 

information r-ngi r ;e nnng ~Sunny 

i t\if y/O v'ATGR 

Legacy Asset Manager - COBOL Reverse Engineering 

Personal Application System/2 

Speedware/Designer 

SQSLWindows 

Super NOVA 

Uniface 

VisualAge 


@ Cross Industry Applications 


Commander Desktop 
ComTrac 

Crystal Reports for DB2/2 
Datalens 
EasyReporter 
Forest & Trees 

iKjtcy _ Trsri^ Plnanr'd P.ankinn hi'crpm 


International Me 
IXVIEW/SQL 


101/ ii/iono/iomnnf Ci/pram 
1 jr <"< 5 * . r 


Metaphor Data Interpretation System 
OpenBooks 

Osrm2 Performance and Capacity System 
Personal Application Systems/2 
POWERMAP 
ProSoft 




Quantum Leap 
Query/6000 
Select Executive 

Student Advisement - Graduation Audit 

The SAS System 

4S-Report 

TRACK 

CLIQ 

Datalens 

iXOS - Framemerger 
PAB/2 

PAB/2 Advanced 
T.O.E.S./2 
The SAS System 
Time and Place/2 



CLIQ 

Datalens 

The SAS System 


CLIQ 

PM/FOCUS 

VisualAge 

WINDOWS/4GL 

CICS OS/2, CICS/6000 
Distributed Application Environment 
Tuxedo 











• industry Specific Applications 


A..... .. 



PeopleSoft Financials 

Falcon Credit Card Fraud Control System 


PeopleSoft HRMS 

IBM SAA Consumer Transaction Runtime/2 Version 2 


TARABS 

IMEX - Trade Finance Banking System 



International Money Management System 


ComTrac 

Lending Advisor 


ProSoft 

PLATEAU - Access Control System 


VE 

PLATEAU - Application Development Platform 





PressLine 

Series III 


D-Tech SCAD A Event Management System 

TARABS 


FACTOR/AIM 

Underwriting Advisor 


PeopleSoft Financials 



ACX Archivi Base Contabilita 



ACX Magazzino Contabile 



ACX Vendite 


CompuServe: DB2VEND file in OS2DEV2 Forum 
internet: Note requesting to thbeyer.vnet.ibm.com 
IBM: Request DB2VEND from DB2INFO at TOROLAB2 
IBM: DB2VEND on MKTTOOLS 
Call: 416-448-2514 














DB03 


Data Access 
Services 

ADSTAR Distributed 




srsMxam 


CIsent/Server Environment 
Products 

► OS/2 Client System 

- ADSM Data Access Services (SK2T-8706) 

- Record Level S/O (VSAM/2 aka RLSO) 

- Distributed FileManager (DFM/2) 

► MVS/ESA Server System 

- Generally Available 6/94 

- MVS/SP 4.3 or 5.1.0 

- MVS/DFSMS 1.2.0 

- VTAM 

- Appropriate Security Package 

► OS/400 Client/Server System 

dssrrr/3O02 Copyright iBM Corporation t993,1994 sr/a/3/i&&4 


Topics 


► Environment 

► Data Access Services 

► Distributed FileManager/MVS 

► Proof of Concept Demonstration 

- C Appiicatlon with a PM Graphical User 
Interface 

- Visual PL/I for OS/2 Sample Application 

- Microfocus COBOL 32 Bit Application 

- Access to AS/400 and ES/9000 


dasnr/shOI ^ Copyright iBM Corporation 1991,1994 ava/3/tSS4 



desmvsOOJ 


^ Copyright iBM Corporation 1993,1994 


svs/3/ldm 





Transparent File Access 



Adherence to existing and emerging industry standards 
Maintaining data integrity and sac ' Y Client'server 


7s endar ’*ult h 

T„ _„ 0 ,,—^ 

an<i update to dats daCcess 

lnfi7Si eXiStir,S TcjS Cc 




55SS4SK«» 

the enterprise 




d*tssrr/s006 


C Copyright iBM Corporation 199.3,1994 


3-ss/s/tam 


Distributed System Evolution 



TRENDS: Enterprise 

° Expanding role of the workstation 
® Emergence of workgroup computing 
® Mission critical data on the workstation 

Enables competitive advantage 

OssmisCOi ^ Copyright iBM Coiporrtiep IP93, !'>M &rs/3J\dm 


Customer Concerns 


► Applications are typically not portable 

► Applications are unable to access mainframe 
resources 



Copyright iBM Corporation 1993,1994 


dasmvs997 


svswtam 


























Data Access Services 
Environment 



dtsmvsOOS Copyright iBM Corporation 1983,1994 svs/3/ISM 


Data Access Services 
Components 

► OS/2 Record Level Input/Output 

- Record Level Access Method 

- Interface for local and remote access 

► Distributed FSSeManager/2 for OS/2 

- DDM Architecture Implementation for Clients 

- Initiate requests for remote data access 

- Source Capability 


(teanvsWi) ^ Copyright iBM Corporation IMS, ISM svs&iam 


Data Access Services 
Client Server Structure 


OS/2 2.x CUent(Source) System 
Application Program 


Record Fite 
LDMI (VSAM/2) 


DFM/2 Client 

J _ 

Remote 

Remote 

Record | 

Stream 

Record 

File 

Access 

Access 

LDM 

Support 

Support 

-s- 


Server (Target) System 


DFM Server j 





J Target LDMI j 





j | Target LDM 




Communications Remote 

Manager [ F,le 


Data Access Services 
Record Level Snput/Output (VSAM/2) 


Record Appf Pgn 


VSAM/2 Router 

. I . 


Record I/O to 
Byte Mapper 


Source 1 LU ^ LU 1 Source 

DDM 1 6.2 < - J ^ 6.2 JdDM 


Local Data Management 

. V . 


Local Data ft 


Distributed Data Access 


Copyright iBM Corporation ISS3, ISM 


^ Copyright iBM Corporation ISSS ISM 







































Data Access Services 
OS/2 System Structure 



dsssrr/sOI3 ^ Copyright iBMCorporafon 1*33,1994 sr/s/3/t&94 


Data Access Services 
VSAM/2 Application Program Interfaces 

* Fite Creation 

- DDMCreateRecFile 

- DDMCreateAltlndex 

► Fite Processing 

- DDMOpeti, DDMCIose, DDMDelete 

- DDMCopyFIte, DDMRename 

► File Updates 

- DDMInsertRecEof, DDMInsertRecKey 

- DDMfnsertRecNum, DDMLoadFiieFirst/Next 


dssnrtsOto 


^ Copyright iBM Corporation 1993,1994 


SVS/3/I&94 


Data Access Client Server Environment 



Data Access Services 

VSAM/2 Application Program Interfaces (Contd.) 
File Location 

- DDMSetBof, DDMSetEof, DDMSetFirst, 
DDMSet Last 

- DDMSetPrevious, DDMSetNext, DDMSetMinus 

- DDMSetPlus, DDMSetKey, DDMSetKeyFirst 

- DDMSetKeyLast, DDMSetKeyLimits, 
DDMSetKeyNext 

- DDMSetKeyPrevious, DDMSetNextKeyEqua! 

► Record Retrieval 

- DDMGetRec, DDMUnloadFileFsrst/Next 

► File Attributes 

- DDMQueryFilePath, DDMSetFile/Path 

^c) Copyright iBM Corporation {993,1994 srs/3/{8/94 


dasmvsOIS 





Data Access Services 
Automatic Data Conversion 



Data Access Services 
A Data Language 

► Two Data Translation Flies 

- Base Sequence 

► Description of record file on remote system 

- View Sequence 

► Description of workstation's view of remote 
file 

► Transiation of the two flies 

- ADL Translation Utility (ADLTRANS) 

- DFM/2 Start up Time 

► File Descriptor Map in CONF1G.DFM 

► Activation when STRTDFMR is used 

dasmvsOia ^ Copyright iBM Corporation 1993, 1394 svs/3Sia/94 


Distributed Data Access to MVS Data 


OS/2 MVS/ESA 



dssmvs020 


C Copyright iBM Corporation 1393,1934 


srjx/3/iam 



































Transparent Access to MVS Data 



Distributed FileManager/MVS 
Data Set Access 

► Data Set types with ail access capabilities 

- IGF Catalogued 

- System Managed 

► SAM 

► ESDS 

► KSDS 

► BIRDS 

► VRRDS 

- POSE Member 


ttesnr/s022 


0) Copyright iBM Corporation 1993,1994 


sYstf/tdm 


What is Data Access In MVS 


► Access Capabilities 

- Create 

- Delete 

- Read 

- Write 

- Clear 

- Rename 

- Positioning Functions 

- LSTFAT (List File Attributes) 

- CHGFAT (Change File Attributes) 

- Locking 

2?f 0 Copyright iBM Corporation 1993,1994 svs/.3Zta/94 


MVS Data Set Access, (cont'd) 

► Data set types with limited access capabilities 

- Non-System Managed: no create, no CHGFAT 

► SAM 

► ESDS 

► KSDS 
* RRDS 

- VRRDS 

- PDSE: Implicit create only with member create 


dastnvs023 


0 Copyright iBM Corporation 1993,1994 


svs/3/13/94 








MVS Data Set Access, (cont'd) 


‘Data Set Access Direction 


► Data set types with no access capabilities: 

- Data sets not ICF catalogued 

- PDS members, PDS* 

- LDS 

- GDG 

- IBDAM 

- ISAM 


Full access capability 

- PDS members of preexistent PDS 

- Alternate indexes (create/delete new paths) 

- Open Edition (HFS) 


destrrrs024 


Copyright iBM Corporation 1993,1994 


s-/s/3/1d/94 


dasmvs025 


^ Copyright iBM Corporation 1993,1994 


arrs&ldm 


MVS Data Set Requirements 

► ASS Datasets ACCESSED must be ICF 
catalogued 

► Ail new datasets CREATED are System 
Managed 

► Byte Stream flies can only be CREATED as 
PDSE members 


OS/2 Data Access Services Value 

► Eliminate Duplicate Data Requirements 

► Improve Data Integrity 

► improve Data Protection 

► Flexible Deployment of Data and Applications 

► improve Load Balancing 



^ Copyright iBM Corporation 1993,1994 


srsW1W4 


ctassnvsCe? 


^ Copyright iBM Corporation 1993,1394 


svs/3/13/94 






DFSMS DFM Target 

DFSMS/MVS 1,2.0 Distributed FiieManager SC26-4915 
Guide & Reference 

DFSMS/MVS Distributed FiieManager/MVS GG24-4403 
(Red Book) 




C Copyright iBM CorpavSon /.*«, l&M 


s-rs/.mzm 






LAN NetView Management Utilities for OS/2 

(LMU) 



Lori Bush 

LMU Technical Marketing 
Research Triangle Park, NC 


IBM Networking Systems 


0 Copyright IBM Corporation, 1994 



LAN Management Headaches 


==& 


You need to shutdown and reboot a remote server, 














Overview 


NOVELL 

Server 


TR/Ethernet Support 



Hierarchical Concept 
Managing Systems 
Managed Systems 

Management 

Operations 

Configuration 

Performance 

Fault 


DOS/WINDOWS 3.1 


IBM Networking Systems 


0 Copyright IBM Corporation. 1994 


Concepts 



IBM Networking Systems 


0 Copyright IBM Corporation. 1994 


LMU 


























Operations Management 



• Graphical Display 
Status at a giance 
Easy to identify icons 


• Remote Command Execution 

Command Line 

OS/2, NetWare Server, DOS/Windows 3.1 

« Remote Shutdown and Reboot 

Timed Reboot 

• Job Scheduler 

Schedule commands daily, weekly, one-time 

• Phone Pager Support 


IBM Networking Systems 


0 Copyright IBM Corporation. 1994 


LMU 



Configuration Management 



Collect Vital Product Data 

QUERYVPD, QDOSVPD 

Display, hard drive, TR address, Processor, Hardware and Software 
Dynamic and Up-to-Date 



• Send Data to Central OS/2 Database 

Reports, Helpdesk 



/ 


Configuration Change Log 

Detects changes to Hardware and Software 


Generate Alert on 
Configuration Change 



IBM Networking Systems 


0 Copyright IBM Corporation. 1994 


LMU 




Performance Management 


ect Performance Data in OS/2 I 

■ OS/2 System Performance 

(Uses SPM/2) 

■ NetWare Server Performance 

(Uses SS.NLM) 

■ NetWare Server volume Information 

t on User Defin ' 

a OS/2 System Perf 
a NetBIOS Adapter Perf 

■ IBM LAN Server 

■ NetWare Server 

■ IPX/SPX Network Statistics 

■ IPX Layer Statistic 

® NetWare Server Volume 

■ Token-Ring Utilization 

AND MORE 





IBM Networking Systems 


© Copyright IBM Corporation, 1994 


Fault Management 


• Heartbeat Monitor 

Managed Systems - Managing System 
Pulse 

• Create Virus Alert 

• Monitor Critical Applications & Alert 
» Create Software Generic Alerts 

• Automated Recovery from Alerts 


* Alerts to: 

NetView/390 
NetView/6000 
NetView for OS/2 
LAN Network Manager 


M an 

NetView/390 
V'.-’ NatView for AiX $ 
NetView for OS/2 


LMU Managing 
l System 



Clients and Servers 


'X 


IBM Networking Systems 


© Copyright IBM Corporation. 1994 








SUMP Sub Agent or Proxy 


• Access LMU Database via MIB 

500+ Variables 

« Remote Commands to LMU- 

• Managed Stations 

Command line 

• Map Alerts to Traps 

• NetView for OS/2 

Integrated into topology 


LMU-Managed 

Systems 


NetView for AIX 
NetView for OS/2 


SNMP 



; LMU Manager with 
* SNMP Sub Agent 



OS/2 LAN 
Server 


DOS/WINDOWS 3.1 


IBM Networking Systems 


0 Copyright IBM Corporation. 1994 



LMU/6000 -Fully Integrated with NetView/6000 



- Topology merged and correlated 

- System status at-a-glance 

- Easy-to-ldentify icons 

- Define your span of control 


- Extensive toolset 

- Integrated with other applications 

- LMU events 


IBM Networking Systems 


0 Copyright IBM Corporation. 1994 


LMU 






LMU with NetView for OS/2 


• LMU as an application 

LMU Managed Stations Integrated on 
NetView for OS/2 Topology 

• Traps/Alerts sent to NetView for OS/2 

Event Display 

• Remote Commands to 

• LMU Managed systems 

• Automation via NetView for OS/2 


NetView for OS/2 


LMU Manager with 
I SNMP Sub Agent 



apple fgm 

MACINTOSH 


DOS/WINDOWS 3.11 


NetBIOS or IPX 


OS/2 LAN 
Server 


IBM Networking Systems 


0 Copyright IBM Corporation. 1994 


What Can LMU Manage? 


OS/2 2.X 
LAN 

Requester 


OS/2 2.X 
NetWare 
Requester 


OS/2 1.3 
NetWare 
Requester 


OS/2 1.3 
LAN 

Requester 


Windows 

LAN 

Requester 


Windows 

NetWare 

Requester 




Macintosh tm 
NetWare 
Requester 


DOS 

LAN 

Requester 


DOS 

NetWare 

Requester 


LMU 

Managing 

Station 


IBM Networking Systems 


0 Copyright IBM Corporation, 1994 

















« Multiple Branch Offices 

No local expertise 

« Central Management 

Net View/390, or NetView/6000 


• Remote Distributed LANs 

WAN Connectivity - NetView/390 
TCP/IP Connectivity - NetView for AIX 


IBM Networking Systems 


© Copyright IBM Corporation. 1994 


LMU 



Fault Management Scenario 


• Joe's Workstation 

Joe likes Golf 

Joe plays golf PC game from home 
Joe loads Virus on Machine — Bad Joe! 

Joe infects his machine! 

Joe logs onto LAN Server 

• LAN Administrator 

Knows about Viruses 

Runs virus detection programs 

Forces virus detection - PROFILE.CMD 

• Scenario 

Joe logs on to LAN 
Force virus detection 
Virus Alert to Managing Station 
Automatic Recovery 

POP UP to Joe -" Bad Joe" 

Page LAN Admin 
Send alert to LNM, disable port 
Alert to NetView for OS/2 



IBM Networking Systems 


© Copyright IBM Corporation. 1994 


LMU 











LAN NetView Management Utilities for OS/2 


LAN Management Isn't Just About Detecting Problems, 
It's About Preventing Them.......... 


Easy to Use Graphical Interface 
Dynamic Asset Inventory 
Realtime Problem Detection 
Unattended Automatic Recovery 
Remote Operations 
Powerful Scheduling Facility 

For Your IBM and Novell LANs 

...All from Your Desktop 

Managing a World of Difference! 



IBM Networking Systems 


(c) Copyright IBM Corporation, 1994 


LMU 



Trademarks 


• Novell, IPX and NetWare are trademarks of Novell, Inc. 

• Microsoft Windows is a trademark of Microsoft, Inc. 

• UNIX is a trademark of UNIX Systems Laboratories 

• Apple and Macintosh are trademarks of Apple 
Computer, Inc. 

• RISC System/6000, AIX, NetView, and OS/2 are trademarks 
of International Business Machines Corporation 


IBM Networking Systems 


© Copyright IBM Corporation, 1994 


LMU 






DM03 




introduction 

IBM Software Management 

Configuration, installation and Distribution 
(CID) 


► Customer Environment 

► Software Administration Challenges 

► Software Administration Requirements 


Some Solutions 

► The cio Solution 

► IBM Software Management Tools ^ 

► CID Product Enablement/Cost 

► Benefits of CID < 

► IBM CID Strategy 


| 

1 

Alan Higginbotham 

Sr. Programmer - Manager 

Austin, TX 



_f if 



m 


Customer Environment 

► Networks more prevalent 

imk + _ 

- Downsizing /Connecting 

- Server-based ( Tl 

:-Q 

Size of LANs increasing 
► Less knowledgeable users 


► Applications more complex 

► Increasing administrator skills required 

► Upward pressure on administration cost 

* 


_ Software Administration Challenges 

► LAN connected vs. standalone 

► Multitude of software configurations across the 
organization 

► Centralized software control 
“Version / Fixes 
“ License management 

► Mission critical applications 
^Software responsibility Increasing 

- Installation 

- Apply Updates / Fixes 

► Loss of control 











► Eliminate end user involvement |g 

- Diskettes Jf 

- End-User questions » 1 | 

-Configuration changes 11 

- Complexity |||1 

► Remote unattended processes 

► Consolidate administration 
-Central or distributed location 

► Easy administration 

► Enforce program license agreements 

► Software inventory 



Current Solution Options 



► Customer Environment 

► Software Administration Challenges 

► Software Administration Requirements 

► Some Solutions i— 

► The CID Solution l|i 

► IBM Software Management Tools 

► CID Product Enablement/Cost 

► Benefits of CID 

► IBM CID Strategy 


Replication 


















Scripts/Proeedures 


^Allows for some personalization 
^Administrator setup time consuming 
^Potential for hangs 

- Unexpected error messages 

- Sensitive to target hardware 

► US changes require re=scripting 

► Language-specif ic 



► Minimal product knowledge required 

► Allows for client level personalization 

► Updates / new product features handled automatically 

► Migrate personalized configurations 

► Allows push or pull of applications 



The C1D Solution 


► Remote, unattended installation/configuration 

- ClD-enabled installation/configuration program 
“Application files on code server 

- Response file 

► Handles unexpected installation/configuration errors 

► Tracks completion status 





















© 



C1D Install Response File 

► Is a flat ASCII file 

► Format is KEYWORD = VALUE 

► Allows response file nesting 

► Allows for comment lines 

► Recommended aids 

- Sample response files 

- Installation generated response files 

► Consistency recommended for benefit of 
administrator 
























Client Execution Environments 



► Code server products 
-NetworkTransport Services/2 - LCU 
-NetView DM/2 
“NetView DM/6000 

- NetView DM for NetWare 
^Administration products 

“NetView DM/MVS 
“NetView DM/2 
“NetView DM/6000 

-Software Profile Management Facility 
-LAN Automated Distribution/2 
Application enablement 

- Software Installer for OS/2 

- Software Installer for Windows 



























► initial install & configuration 

► Product fixes 

► Delta feature / configuration changes 

► Migration of personalized parameters 
across product versions 

► Product removal 



► Customer Environment 

► Software Administration Challenges 

► Software Administration Requirements 

► Some Solutions 

► The CID Solution m 

► IBM Software Management Tools H 

► CiD Product Enablement Cost 

► Benefits of CID 

► IBM CID Strategy 




































CID with Software Installer 



■ Costs with SI 


- Rang© 

f / /■ .•••, \ \ 

- Function of installation complexity 


■ Simple case 

= Complex case 

-SI handles all required dialogs 

- Vendor provides additional 

-SI handles all required 

dialogs 

configuration updates 

-Vendor provides 

-Vendor provides the SI package, 

product-specific configuration 

etc. files 

file management 

-1 person-day 

-Vendor provides user exit 


routines for additional functions 


-3 or more person months 




CID Enablement Costs 


a Typical install/config. - 5 KLOC 

10% 

■ CID delta: 100-1000 LOC 


- Command line parameters 

W \ 

- Response files j 

W | 

^Comprehensive message logging \ base j : 

“Handle locked files \ " 

/■'/ 

- Uninstall 


-Set up code server 

* 


_ C1D Enablement Benefits 

■ Customer Satisfaction 

a Greater access to enterprise market 

■ Greater control over installation 

a Fewer support calls on ’’Home grown" install processes 
a Automated code fixes 
a Administrator productivity improvements 
a Non-disruptive to user 



CID Productivity Improvement 


OPERATING SYSTEM. LAN RF.Q., OB REQ., 3270 FUNCTIONS 


IBM OS/2 2.0 Environment 

Data For Each Workstation 



W&M 

|||i|i 

mm 

WMXZ 

; Trial 


ipl 

iiiii i 

!$$$;$ 

!!§ |$:g|; 

iliil 


WM 

mil 

i$$j$| 

1111 

ilillli; 

Tint* 

\ 

t5i* j 


llllll 

w* ■ 


* Data Assumes Ec&icated Installer 


IBM OS/2 2.0 Boot Initiated Installation 

Dais For Thirty Workstations 



WM 

iliil: 

l$ssi 


iiiiiii 






Ilillli! 

Paptete f Question j 













1 If Prompted For Workstation Name 



















CID Works! 


► Compute center 

-"CID is a fundamental part of our software distribution strategy," Mike Dove; >100K PC's 
per year 

HSSC-SER (internal IBM) 

“Significant savings of dollars, people and time over manual installs 

► Union Gas of Canada 

-"CID installs are done without a hitch; almost never have a problem" 

“’The CID process is a godsend" 

-"Can't imagine installing without CID" Chuck Dunn 

► Lockheed Space Operations Co. 

-The CID process has practically eliminated the consistency problem" 

-"We no longer have to keep multiple hard drives set aside for multiple configurations." 
Gary Ragan 

► Security Life 

-Significant savings (time) to configure the end users workstations (OS/2 workstations)." 
Norm Naes 

► Northwest Pipeline 

-"CID allows us to load LAN Server 3.0 server (to) a clean disk in about 45 minutes. The 
process would otherwise take about 4 or 5 hours." Dean Gianville 


► An American airline 

-Went from 12 people to 1 person for upcpade of 300 workstations 



■ CID is a strategic architecture 

H Easier software management in 
distributed environments 

a Dramatic productivity improvements 

■ CID offers advantages over other 
software distribution technologies 

■ IBM is committed to making CSD an 
industry standard for software 
management 



s Continue to deliver and 
enhance a complete set of 
Software Management Tools 
B CID enable most personal 
computer programs 
8 Encourage industry 
participation 

a Extend CID to other platforms 
* Provide CID verification 
through LAN Systems "Tested 
and Approved" program 








Distribution Challenges 


NetView Distribution Manager 
Product Family 
Basic 


Denise Barlock 
IBM 

Research Triangle Park, NC 


Increase User Productivity 
Reduce Support Cost 
Manage a Diverse 
Environment 



Requirement Areas 


Distribution Elements 


Package 

Preparation 



















Distribution Options 


Sneakemet 




Replication 

e- & •©- e e -e- 

• is n s§ ® is 

Iliiil 

■O’ *©■ *©- *©* -©* 

f l 11 i i 

If If I 



c . Replication Aid 

■Sneakfimer^ w 


► Reduce Replication Effort 

- Windows 

- DOS 

- OS/2 

► Capture Modifications 

- Configuration 

- Package Files 

► Creates Replication Input 
~ Update Configuration 


DiskCamera 


Before Install After 


Application 



CSD 


Instaiip 


Configuration Installation Distribution 
a Remote 
■ Unattended 


NetView DM 
Server 


NetView DM 
Agent 



► AIX Software Installation 
Method 

► Vendor Supplied Images 

* NetView DM/6000 Invokes 
Instaiip 

► Software Status 

- ODM 

- NetView DM/6000 Catalog 



































































Distribution Environment 




Distribution Today 



► Choice of Management 
Platform 

► C!D Support 

► 3174 Level C Support 

► Enhanced Replication 
Utilities 

Disk Space Checking 

► Coreq Checking 

► Unique File Management 































Rollback Scenario 


IMefView DM 
Server 



install with Removability 

install Mew Files .-. 

iater„„ 

Remove .. . 

Restore Back up Files 


NetView DM 
Agent 



IMefView DM for NetWare VI *0 


► Choice of Management 
Platform 

Push and Pull 

*- Logical Grouping of Clients 
for Change 

► CID Support 
Prereq/Coreq Checking 

► File Retrieval from Client 



NetView DM/6000 VI .1 


Choice of Management 

Platform 

Push and Pull 

Logical Grouping of Clients 

for Change 

Installp and CID Support 
Prereq/Coreq Checking 
File Retrieval from Client 
Interoperability with NetView 
6000 


NetView DW/R000 

Setver AIX Agent 



OS/2 Agent Windows Agent 


Benefits of Today's Solution 


Increased Productivity 

- Better Skill Use 

- Timely Updates 
Reduced Support Cost 

- Automated 

- Unattended 

- Skills Leveraged 
Diverse Environment 

- Multi-Platform 

- Multi-Protocol 
































Distribution Directions 



Me?View DM/2 
MetVtew DW 600 D 
NstVtew DM tor Ms? Wans 









Distribution Challenges 


NetView Distribution Manager 
Product Family 
Advanced 


Lynn Percival 

IBM 

Research Triangle Park, NC 


► Increase User Productivity 

► Reduce Support Cost 

► Manage a Diverse 
Environment 



Requirement Areas 


Distribution Elements 


Package 

Preparation 


































Distribution Option; 


Sneaker net 



Replication 

■©■ e a- ■©■ «■ a- 

ilKiKII 

KmmKKK 




CID for DOS and OS/2 Unstallp for A!X 


Configuration InstaSSation Distribution 

■ Remote 

■ Unattended 


NetView DM NetView DM 

Server Agent 



Replication Aid 


► Reduce Replication Effort 

- Windows 

- DOS 

- OS/2 

► Capture Modifications 

- Configuration 

- Package Files 

► Creates Replication Input 

- Update Configuration 


DiskGamera 



* AIX Software Installation 
Method 

* Vendor Supplied Images 

► NetView DM/6000 Invokes 
Instailp 

Software Status 

- ODM 

- NetView DM/6000 Catalog 





















































Distribution Environment 



Distribution Today 



> Centra! Administration 

- Servers and Clients 

- Other Node Types 

* Fan Out Distribution 

* Host API's 

► Dynamic Network Change 
Improved I/O Performance 

* Enhanced Usability 

- Plan Sharing 

- IOF Message Viewing 


NetView DM/MVS 



RISC/6000 3174 Others Agent 




























Software Profiling with SPMF 



NetView DM/2 ¥2.1 


> Choice of Management 
Platform 

C1D Support 

► 3174 Level C Support 

> Enhanced Replication 
Utilities 

► Disk Space Checking 
* Coreq Checking 

Unique File Management 





Software Profile Management Facility 


► Manages by Workstation 
Function 

> Simplifies Enterprise 
Distribution 

- Manages Groups 

- Identifies Software 

- Dynamically Selects 
Workstations 

- Schedules 

- Automatically Builds and 
Submits Plans 

- Tracks Status 

- DB2 Database 


SPMF 

NetView DM/MVS 



Rollback Scenario 














































NetVIew DM/6000 VI .1 


► Choice of Management 
Platform 

► Push and Puli 

► Logical Grouping of Clients 
for Change 

► Instalip and CID Support 
& Prereq/Coreq Checking 

► File Retrieval from Client 
Interoperability with NeiView 
6000 



OS/2 Agen i Windows Agent 


Benefits of Today's Solution 


► Increased Productivity 

- Better Skill Use 

- Timely Updates 

► Reduced Support Cost 

- Automated 

- Unattended 

- Skills Leveraged 

► Diverse Environment 

- Multi-Platform 

- Multi-Protocol 



Net View DM for NetWare VI. 0 


s- Choice of Management 
Platform 
*> Push and Pull 
^ Logical Grouping of Clients 
for Change 
► CID Support 
p Prereq/Corsq Checking 
j- File Retrieval from Client 



Distribution Directions 


NatVtowDM/2 

NotV Saw DM/6000 

NatVSow DM tor NetWare 












Standards Conformance 


► Activities 

- POS1X 

- DC E/D ME 

► Accepted Standards 

- Change Management 
Architecture 

- System View 

- DC E/D ME 

- POSIX 





















































GP01 


v introduction to Desktop Conferencing 

✓ Applications of Conferencing technology 

✓ Person to Person Product Overview 

«/ Connectivity Features 
«/ Application Features 
✓ Future Directions 


Because You Can’t Be Everywhere., 


in tits document to IBM products mo trademarks or registered trademarks of International Business Machines Corporation. All 
other products are trademarks or registered trademarks of their respective companies. 

SBftS Person to Person 


Desktop Conferencing: 
A Simple Definition 



'People... f 

in different places working together, 
sharing Information and Interacting 
In real time using computers." 


Communications Evolution 
to Desktop Conferencing 


SBM Person to Person) 


IBM Person to Person R1.0.3 ' 
Desktop Videoconferencing Systems yr 19 
IBM Person to Person R1.01993 

IBM Person to Person PRPQ ^gg 2 

Document Databases (Notes) y 

/1990 

E-Mail systems Q 33 
Local Area Networks^/l986 ps ^ 

Terminal emulation y 1984 IBM PC AT 
Line-mode Async /^982 IBM PC 

IBM! Person to Person 


PS/VP, 

ThinkPad 


GP01-1 


IBM Conferencing Products 











T 


Sam® Different 

Time Time 


Same 

Place 


Different 

Place 


Meeting 

Support 

Software 

Bulletin 

Board 

IBM 

Person 

to 

Person 

E-Mail, 

Databases, 

Forums 


IBM Person to Person 


Person to Person Application: 


Remote Presentations 


Presenters can reach remote 
audiences without traveling, 
and can share graphics, 
images, text, and video. 



BBM Person 



Feedback can be 
immediate and 
interactive 


GP01-2 


to Person 


gw Tim© later 


Desktop Conferencings 
Another Dimension - Focus 



Person to Person Application: 
Help Desk 



Help Desk personnel can 
quickly solve users' problems 
by viewing data files and 
application window contents, 



They can also update or 
refresh files on the user’s 
systems when needed. 























Person to Person Application; 



8B&0 Person to 


Distance Learning 


have real time access to a 
picture of the problem. 


GP01-3 


Person to Person Application; 
Remote Problem Resolution 

Make effective use of a few experts 
by providing them electronically 
. to many other locations. 

























Person to Person 
Product Overview 


;§1 ^ : Feate res;- ■ ■ : ' : ■' • ; ; i ' : 

Q 

H flli 

ARIA '• 

■ M.IHM . "• Jsf?’ ' 

1! i : !!!!!’! i'i i'i i i 

mmmm 


: iilirarsstsr: if: : : if: i 

j: : j : : j:j'j-:; -1::‘jL;RaW«S^:nOiEf : 

:ifiillgiifffif:: fi::: . 1 

Conference Control: lU 

: 

% m I 

| 

Calf Address ||| 

ttstten Sa«# ' 

Manager Book 

w* «*»» - 


IBM Person to Person 


Person to Person Connectivity 
"Multi-Every thing " 


TCP/IP 
♦- 


TCP/IP 



Person to Person is 




Up to 8 People 
in One Shared 


NetE 

mm 

IIOS 



NetE 

JIOS 

to 


ASYNC 


ftanforAnr%< 




OS/2, 

Windows 


NetBIOS w 

SPX TCP/IP 

Async OS/2, As y nc 

, tcp/ip Windows 
ISDN !SDN 

SNA 


SNA 

ISDN 

m 


Direct Peer to Peer Calling: No Server needed 
Multiple-Way Calling: Up to 8 participants 
Multiple Protocols between call participants 


IBM Person to Person 


Person to Person 
Call Manager 


\j> } 

□ 

_nrn 

fX 

— 



MIII& 

MIMA 



p j 


/-L\ 



* Handles all incoming and outgoing call requests 
^ Runs continuously to answer and place calls 
* ‘aintains status of calls and system o 










































Chalkboard Utility 



8BM Person to Person 


Person to Person 
Remote DDE 



IIIBM Person to Person 


Clip Utility 



IBM Person to Person 


Person to Person 
Remote File Transfer Utility 



✓ Transfers files in background 

✓ Received files held in queue 

✓ Transfer multiple files to multiple people 

^ Utility can call remote system independently 


IBM Person to Person 


IBM Conferencing Products 













































































































Person to Person 
Talk Utility 



* Provides real time text communications 
^ Can provide a transcript of conference proceedings 
>r All entries timestamped and identified by user name 
>r Useful for async users when no audio link is available 

IBM Person to Person 


Person to Person 
Stills Capture Utility 



Captures video frames from ActionMedia II adapter 

✓ Enhanced (High-Resolution) mode, up to 24 bit color depth 

✓ Save image as a Bitmap, Paste into Chalkboard or other appl. 

IBM Person to Person 


Person to Person 
Video Sharing Utility 


Optional "Video Sharing" 

✓ ActionMedia II based video 

✓ Bidirectional, 15 FPS 

✓ Video only - audio via telephone call 

✓ Useful for showing objects in real time 

Software decompression option 

✓ NO AM II hardware needed at remote end 




&' Vide© 

can he carried 
over any supported 
network and protocol 


IBM Person to Person 


Person to Person/2 
Application Integration 


Dynamic^ 
Exct 



Programming 
interfaces 
("Lakes" API) 


Shared Ciig 


jLaunehablg 
- Chalk 
-Fits 


The Platform for 
Workgroup-Enabling 
(People AND Applications) 


IBM Person to Person 


GP01-6 


IBM Conferencing Products 




























Person to Person 

It's "Multi-Every thing™ 

Person to Person 

It's "Multi-Everything " 

✓ Multi-Platform 

/ OS/2, Windows, AIX {planned for future) 

✓ Multi-Party 

✓ Up to 8 users per conference 

✓ Multi-Network 

^ NetBIOS, TCP/IP, Novell SPX, SNA APPC/APPN 

✓ Token-Ring, Ethernet 

✓ Async Modems, ISDN BRi 

v' MySIhFooctiori 

•/ Chalkboard, Clip (Remote DDE/OLE), File Transfer, Talk 
■/ Optional Video Stills Capture and Video Sharing 


/ Multi-Industry 

v People in any industry can work cooperatively together without 
being together 

✓ Multi-Application 

^ "Cai? the Expert" 
v Remote Teams/Meetings 

✓ Customer Service 

✓ Distance Learning/Sales 
v' Telecommuting 

BBM Person to Person 

IBM Person to Person 

Person to Person 

3 Good Reasons to Use It 

IBM Person to Person 
Important Numbers to Remember 

\y Connects you with your customers, colleagues, 
and friends 

v Allows you to share many kinds of information with them 

|v Uses the computers and communications you 
probably already have in place 

✓ Interoperates between Windows and OS/2 
platforms today 

✓ IBM AIX and Apple Macintosh planned 


To Order: 

Call 1-800-1BM-C ALL 

For More information: 

! Call 1-800-IBM-9402 

IBM Person to Person 

Person to Person 


GP01-7 


IBM Conferencing Products 










GP02 




Session Nn 




TOPICS 

► OVERVIEW of Product & Components 

► Additional items from IBM 

► System Requirements 

► Installation Planning 
fc, installation OvsrvlvW 


IBM OS/2 Version 2.11 

► Award-winning 32-bit PC Operating System 

► Runs DOS, OS/2, and Windows 3.1 applications 
at-the same time 

► Pre-emptive multitasking 

► Crash Protection 

► Data Integrity and reliability 

► Workplace Shell:-Graphical User Interface 

► Mainframe Connectivity (e.g., CM/2) 

► REXX: Automate procedures 


Pane? 1 -4 
















IBM OS/2 LAN Server Version 3 




► File Server 

► Print Server 

► Requesters included 


► Network Operating System: manage resources 

► World-class International Language Support 

► Multi-client support: Windows & OS/2 





► Industry-leading performance 
-Number of Users 

~ Throughput 

► LANQuest Performance Benchmark 
Comparison Report: 

“October 1993 
- Available: 

► In U.S.: (800) IBM-4FAX 

► Document #2347 




Lotus Notes. V3 


Cllent/Server Architecture to help manage 
information 


Store Information of different type s : , 

► Text ' 

► Spreadsheet Data 

► Scanned Images 

► Voice 

► Video . . ; :/ . Mi U 


Lotus Notes V3 

► "Knowledge-sharing” applications 

► "VIEWS" of documents/forms/applications 

: ■ ► Mobile User support 

- "Laptop Notes" 

► REPLICATION of databases 

► "The Groupware Standard" 


Session No 


San Francisco 


Page 5-8 











:.V : • ' , ; ■■ ■ " , . , . . . y)V^ ■ 

s m a® a ■ 11*111 



- System PerformanceMonltortfor OS/. 



; - •> • My/.. 


IBM provides 

► Graphic display monitoring of: . , 1 |f 

-RAM (memory) • 


"... a powerful workgroup 

fW’llsBl^ v• • r '%'■ ■ '#?'/ ‘Z 

- CPU (Processor utilization) 


computing solution in a single box 

Down to ProeesSiand Thread B-ey|ji|||||g|;/|!|lWi||il|M|j|| 


§t 3 gOOO pflG©- 

*■ Live data captured • 1 

► Pre-recorded data with playback capability 


-James T. Norman, Contributing Editor, 

The Andrew Seybold Outlook 

; > Log file capture , 


on Professional Computing 

► Detailed reports 
v Output to spreadsheets 


* ■’ : ■ 

' ► Alalysls: SYSTEM Balat|§|j| §|§|§ 


W:: 0 zJ- : C.||S TyTM ■ ■■■■';; ' ■ Vii® /■ . 







: : | - Additional Items from IBM include... 

: -‘'Getting Started” bookie! 

" III ^tOpag^ . j||jj§J : 

- Step-by-step instructions ' , - 

-Sample configuration included ' - 

-CASE STUDY: working model of system If : % ■ 

-Worksheets: "fill In the blanks" 

: *1 .... : • ; 

... ,:^*fll088*HV of terms:. 

-■ ■■■ 


’.►Common Installation Guide: 

; - VALUE in the packaging of the product 

-Testimonial: J. Norman, Contributing Editor, 

The Andrew Seybold OUTLOOK on 

Professional Computing 

- Excellent tool for reseller or VAR 

- No other manuals necessary 


O /~\ r* r* ! /-> r-i M/~\ 


Ran Franr.isnn 


Page 9-12 







► VHS Videotape: "Quick Start” 

-Product Overview 
-Live Demonstration 

“ installation Overview: Graphical Flowchart 

- IBS/! Offer: Savings on Consulting Services 
■►IBM Customer;Support and Service 

-Single Point ©f Contact for components 

- 90 days of complementary support in USA 


^Q days tor OS/2) 





Session No 


San Francisco 


1 


Addtional Items from IBM include ... 

► CERTIFICATION from IBM: "Tested and 
Approved for LAN Systems" 

- Installation Tests 

- Compliance Tests 

- Compatibility Tests 

- Execution Tests 

- Objective: Real-world environments 

► Also used by Non-IBM Software developers 





System Requirements 


»=* HARDWARE: THE OS/2 SERVER SYSTEM 

- Processor: Intel 486 recommended 

- Disk: ’ 300 MB Fixed Disk 

- Media: CD-ROM drive 

TM 

- Network: Token-Ring or Ethernet adapter 
► SOFTWARE: THE OS/2 SERVER SYSTEM 

- Already Included 


Pnrjfi H IS 






.... 

System Requirements 


System Requirements 

► OS/2 CLIENT SYSTEMS 


► DOS/WINDOWS CLIENT SYSTEMS: 

- Hardware 



- Hardware: 

► Processor: 

Intel 386 or higher 


► Processor: Intel 386 

► Memory: 

8MB 


► Memory: SMB 

► Disk: 

120MB 


► Disk: 120MB 

► Network: 

Token-Ring or Ethernet ....... . 


► Network: Token-Ring or Ethernet 

- Software: 



- Software 

► IBM OS/2 (preferably V2.11 ©r higher)|l'4' /izMMr ■ 


► DOS (preferably PC-DOS 6.1 or higher) 

i 

; ; ; .* ill! 


► MS Windows (preferably 3.1) 


Mill 1 #illl 1 

".'j r : . 








Installation Planning 


► Installation Overview 

■" . 

► Nanning Conventions: Considerations 


Mil,,-,, 



. .. 

I| s ; 


.... 


'/♦ < V. , / ' , 


i*' 




' -S'- 7", 


! 

Installation Overview 

§ 

► Sample environment 

1 

-1 Server on OS/2 

1 

$ 

- 6 Client Workstations 

p 

► Any mix of OS/2 or Windows clients 

1 

► Customer chooses any combination 


► Scalability 


- "Pilot" LAN: Introduce workgroup computing 


- Interconnected LANs 

% 

- Interconnected Enterprise-Wide Network 


Session No. 


San Francisco 


Page 17-20 









Naming Conventions 


Naming Conventions 

rV, ) ^ 



► LAN Server: 


► LOTUS NOTES: 

- Domain Nam® 


- Server Name 

-Server Name 

§|J i ®S¥ 


- Organization Name 
-Administrator's Name and Password 

■ -User IDs 


- User Names and Passwords 

- User Passwords ISfeS’' 1 % 



: : ' - : ' ’ ■ ;i’: : ■' ::: ; ' 

! ' : : : : - m .;®i : : 

j . ® x®.: v.®: . xr ' ■ .ix® & MB. x tW^BBBW-- 

; s » ®l i mmm s;; : ® issiiiliiilisas i 

i : s ■ - a 

- ®® : - mm p : m . » ■ 


iBBWPMBBBrB X ; - X X- 



Installation Planning: Tools Provided 

► Glossary 

5 ► Planning Worksheets 

- Assist with naming conventions 
► Parameter-oriented 

S' ►Name-oriented 
-"Fill in the blanks" 

► Case study: working example configuration 

► Quick REFERENCE Tables 

- Plan your task 

-Jump to right section in Common install Guide 

- Consistent reference point during install 


Session No 


San Francisco 


Page 21-24 








► Sample Configuration: • 

- On® Server ';'' 

, -Six clients (mixed OS/2,and Windows) 

► Server software Installation' f ? 

► Client Software installation ' 

► Other considerations: f \ : 

- Dedicated Notes server 

- Ethernet environments ' . 

- Diskette images provided 


- 




4 " , 4 

Wm4M4 
4 '/, '4 ;; 










. applications” 

► Industrial-strength and scalable : 

; 4-.4Va. ANifEl*Ammnl%4 8rii,**laflsljCt#i 


;► REXX API: interflow/X from IBM 
► Cart provide additional clients later 

4^iL : \A#mrlf/rtF<n,Mfn* Amntloatifuie* r3n«iir*l<r HAS 




Qoccinn Kin 


Qan Pranricrn 


Completed Installation 


► Which software components reside on which 
systems in sample configuration 

► Tested for optimized installation 

- LAN Administrators 

- IS professionals 

- DQS/Windows novices 

► Completion Objectives: 

- Fully operational base system 

- No other manuals or service calls required 

- A starting point for customization 



IBM Server for Workgroups: Directions 


► Refresh of Components 
-LotusNotes 3.1.5 

- LAN Server 4.0 

- Other future component releases 

► Configurations being considered 

- "Version" for,specific market (e.g., mobile) 

► Versions 

- New product release 

- Key requirement: Full Integrated installation 

► Possible product promotions 


Paae 25-28 













Worksheet 1. Installing LAN Server 


Required Entry' 

Shown in 
Procedure As ' 

Nametdbe.U$ed : : 


server ,Name, . . tssejver; ; 

Domain Name LSdamain 

LAN Requester Name 1 LRmach 

LAN Requester Name 2 LRmach 

• HALJLc? 

~; HALJLSDM 

—.— HAL„PC 1 

LAN Requester Name 3 LRmach 

.. | 

nnj^ru* , , , PV-j 

HALJgllllli 

Worksheet 2. Defining New LAN 'Users '* 


Required Entry 

Shown in 
Procedure As 

Name to be Used:: 

Example , r;^ 

LAN User 1 ID Name 
LAN User 1 Password 
LAN User 2 ID Name 
LAN User 2 Password 
LAN User 3 ID Name 
LAN User 3 Password 

LSuser 

LSuserpw 

LSuser 

LSuserpw 

LSuser 

LSuserpw 


PETR ILL! - 

JACKSON 

UAMEBSN 

ORLANDO ^ 

RJAMERSN 

AUSTIN 

-—-. 


M/ \ 

'M 

: 








■ 


111 




Table 4. Steps Required to Install the Advanced SetverTor Workgroups Product on your Server 

Action 

Refer to 

1) Plan your network. 

Chapter 2, "Planning for installation" on page 7 

2) Install OS/2 2,11 on the server machine. 

3hapter3, "Installing OS/2 2.11" on page 17 

3): Create the necessaiy sets of installation diskettes. 

'CreatingInstallation Diskettes" on page 23; 

4) Install OS/2 LAN Adaplerand Protocol Support (LAPS) on 
thesejvermaachlna. 

'Installing OS/2 LAN Adopter and Protocol Support" on page 

24 

5) Install OS/2 LA N Server -Advanced on the server machine. 

'Installing OS/2 LAN Server" on 
pane 26 

8) Create Installation directories tor Lotus Notes and SPM/2. 

'Making Installation Directories for Lotus Notes and SPM/2" on 
)age 27 

7) Install the Lotus Notes Server on your OS/2, server 
machine. 


'installing the Lotus Notes Server" 
jn page 30 

8) install SPM/2 on the server machine. ■ 

‘Installing SPM/2 (Optional)’’ on 
page 36 




Interconnected 
Enterprise-Wide 
. Network 


biSULtti, 


Session No 


San Francisco 


Page 29-32 



















m si m 

‘Lotus'Notes SflMWIor OS/2 
mm OS/2 IAN 8«mw 
\m os/2 


Widows 


Page 33-36 

























b©rv&r \m$PW2 

■ • Lotus Hotos Server for OS/2 

. IBM OS/2 LAM Server ' 

IBM OS/2 


#|^^C^Str MH. 8%q£#tet < 


s 


;||ppp 




i<?fcys JNk>ies Windows Client 
IBM COS LAM Requester 


Windows 


Trademarks and Copyrights 


Page 37-40 


> IBM, OS/2, SPM/2, System Performance fttonitor/S, and LAN Server are either registered tredenwKe 
or trademarks of International Business Machines Corporation / ; 

* Lot us Notes Is a registered trademark,of Lotus Corporation 
*■ Windows la a trademark of Microsoft Corporation 

e Et hornet ie o trademark or reflietarod trademark of the Xerox Corporation ■ ■ •/ 


San Francisco 


Session No. 


Windows OS/2 






























ImagePIus Systems Today 


SmagePlus Family 


> Largest Image Software and Consulting Company 

► Over 1,300 customer installations worldwide 

► Broad spectrum of industries 

► From small business to large enterprise 

► Simple to complex applications requiring high performance 

- Integration with existing software applications 

> Range of Product Offerings to Meet Customer Requirements 

► Host 

► Departmental 

► LAN 

► Client/Server 

> Tangible Customer Benefits 

► Process & productivity improvements 

► Cost reductions 

► Competitive advantage 

► Reduce paper mess 

► Improved customer service 

> Technology Differentiators 

► Mixed object library management 

- Imaging 

► Color imaging 

- Distributed object management 

► Advanced work management 


iM^. 


► Document Architecture 

► System Managed Storage 

> Work Process Management 

> Image System Management 






► ImagePlus/MVS ESA Folder Application Facility 

► lmagePlus/400 Workfoider Application Facility 

► Visuallnfo lmagePlus/2 

► Visuallnfo OS/2 Client 

>■ Visuallnfo OS/2 and MVS Servers 


IPO1004 


IP01005 


lmagePlus/2 Workgroup 

► immediate Business Value 

► Easy to install, Use and Manage 

Supports image, Video, Audio, Text, and other 
types of information 

► Broad Ability to Integrate with Your Existing 
Applications 

► High Quality and Backed by IBM Support 

► Affordable 



HM^. 


OPERATIONAL IMAGE TO THE DESKTOP! 


immediate Business Value 





IMPROVES 



REDUCES 



- Fax 

> Copies 

I 

- Paper Handling m 

> Misfiles, Lost documents 

- Cycle Time 


a 

m 


Document retrieval time 
Customer service 
Work-in-process control 
Productivity 


ipoiooe 


IP01007 



Easy to Install, Use, Manage 


EP' 


> End User 

- File cabinet concept 

► Icon driven 

- Automated Installation 

► Workplace shell 

► System Administrator 

► Icon driven 

- Automated installation/CD ROM 

► Activity Log 

r- Online Documentation 

► Developer 

► Application Program Interfaces 

► User Exits 

► Sample code library 

► Online documentation 

POWERFULL Y SIMPLE^SIMPL Y PO WERFUU 


Automate Existing Process 




Final Review - Committee Loan Admin - Accounting 


IP01010 


Automate Existing Process... 


E^ 



Over 150 Application Programming Interfaces 
User Exits at Key Points 
Enhanced Sample Code Library 






















High Quality-Backed by IBM Support 


MM'™* 1 * 0 * 

> 800 Number: 1-800-237-5511 

e Single point of contact 

► Defect, Q&A, and installation support 

► Personal response 

> CompuServe 

► Defect, Q&A, and installation support 

► Bulletin board for fixes 

► Information bucket for news 

► Copy of demo, other tools 

> Facsimile 

► Defect and installation support 

► Convenient submission of problem reports 
f Fax or voice response 

> Bulletin Board Service 

► Fixes, suppot information 





















Capture 



► Convert Paper to Image via Scanner or Fax 

► File Import as Image or In Native Format 

► Verify the Quality of the Scanned Image 

► Indexing 

► Manual 

Auto (Bar Code, OCR) 

IP01015 




Library Object Window 


> View Window: Document pages or a list of folder Items 

> Index Form Window: Index Information associated with the document or folder 

> Note Window: Note(s) associated with the document or folder 

> Index Class Serves as a Base for: 

► Security ~> Access control list 

► Auto workflow 

► Auto folder 

► System managed storage rules 


IP01017 


Folder Model 





► Index Class 

► Key Fields 

► Description 

► Content Class 

► Notes 





IP01016 





► Compression/Decompression 

► G3/G4/MMR 



Open Design 

► API's 

► Exits 

► OS/2 Presentation Manager 
Displays 

► Cornerstone Monitors - via 
OS/2 Presentation Manager 


yC Extensive Document Formats x 

► MO:DCA IOCA TIFF BITMAP ASCII \ 

► Additional formats through Exits / Programr^ 


Wide Range 
of Scanners 


All OS/2 

Presentation Manager 
Printers 


IPOIOIf 























Retrieval 


Document / Folder Processing 


i 



► Check-in / Check-out 

► Update 

► Delete from Fileroom 


> Basic Search 

► All index Classes / Key Fields 

► Specify Index Class 


> Advanced Search 
► Wildcard 


► Options for Search 

► Document/Folder 

► In workflow / Complete / Removed 

► Active / Suspended 


► Route 

► Viapre-defined workflow 

► Remove from workflow 

► Complete 

► Suspend 

► Change Priority in Workbasket 

► Notes 

► Print / Fax / Export 


IP01019 


IPO1020 


Workflow 






► User selected 

► Shared and Private Workbaskets 

t* "FilS-m-the-blanks" Workflow Definitition 
«> Serial Workflow 

► User Directed / Override 

► Conditional Routing via Exits 

► Suspend Awaiting Additional Input 


Systems Administration - Online 



► Users & Privileges : define user, user groups, privileges and access control 

► System Managed Storage: define methodology for managing objects in the system 

► Fileroom: define key fields and index classes 

► Workbaskets: define workbaskets 

► Workflow: define workflow 

► Index Classes: define document types and index fields stored in the system 

► Utilities: workflow history, back-up/restore, reports 


IP01021 


IP01022 







Enhancements to IP/2 for Visual tof® 


Install 

► Unified install program 

► Configuration, installation, distribution-enabled 

► Improved EUI 

► Pre-defined sample configurations 

. System Administration 

► Unified systems administration 

► Can run concurrently with applications 

► Improved usability 

- Enhanced Security 

► User and user groups 

► Access control lists (by index class) 

► Views (attributes within index classes) 

► Enhanced Systems Managed Storage 

► Migrate objects to host 


» End User Interface i8M ,naBrf *“. 

► CUA '91 menu bars on Index, Note 

► Table of Contents 

► Enhanced Multi-document View 

► Improved icons 

► Import Export 

► Integrated with product 

► Content class handlers 

► Enhanced Search Capability 

► Wildcards 

► Boolean logic 

* Ranges 

* Integration with SearchManager/2 

► Workflow 

► Integration with Flowmark 

► Enhanced Image Function 

► Toolbar 

► Magnify 

► Advanced scan 


Marketplace Reaction 


Customer. 

"The thing we liked about frie new IBM image product was the V - you can and have 

it up >•.»»»:? s: or ithas frie ability to be a; -wx** 

"The -r-•‘S'-r'.-r’.-v-is important to us, because we don’t know when we’re going to confront another merger or 

another acquisition. It really fits our strategy and will complement us tremendously." 

William F. McLimans, Division Manager, Key Services, Subsidiary of Key Corp. 

C-oasultoiit 

The fact that you put a &■. rd-r:: dwkwp. and you embellish that with more and more 

y 0U begin to lay the and then you layer in more 

sophisticated types of workflow processes on top of that - r;: • i-: -r::- ¥•* rMfieeyi*!*" 

Mike Howard, VP and Service Director of Office Information Systems, Gartner Group 


one or two stations, 



"IBM now has a new offering that allows you to->.* sxnr 

right *:wv>sw: Vr-ai •:>: izv&r;-., and of course, 

work with." 

Jed Gieim, President, Midcontinent Business Systems 



JgM kra{pPtUO c. 









Fiowmark for OS/2 





► Workflow Management Architecture allows Separation of: 

► Application from process logic 

► Process modeling from data / function 

► Process Animation 

► Process Modeling Flexibility 

► Object methodology 

► Interpretive behavior 

► Graphical interface 

► Object Technology Employed 

» Assign People, Roles & Organizational Responsibilities 
s> Import / Export of User Registration 

► Work Book Function 

► Self documentation of processes 

► With cross references 

► Rapid Prototyping via REXX Interface 




IPO1029 


ImagePlus / Fiowmark integration 




IP01033 






































XT02 


TO&J? Agenda 

mrm&m mummm mmm Eam— ^ 

SmagePIus/2 Tips, Techniques, Trends & Directions 




IP0200I 


► Setting Up Your Own Working image System 

► Demo of Installation 

► System Admin for a Simple System 

► Installing Demo Database 

> Configuration Examples 

> Typical Scenarios 

► Sample University Application 

► Sample Title Insurance Application 

> Planned Additions to the Product 

► Available Tools and Help 

► ImagePSus Systems Trends and Directions 


IP02002 


Setting Up Your Owm System 





Standalone 


Setting Up Your Own System 


Local Area Network 



► install OS/2 

e- Install Data Base 2 for OS/2 

► Don’t forget the lastest service - 7015 

> Install lmagePlus/2 

► Use CD-ROM 

► Include latest service from CompuServe 

o Work out your system on the Worksheets provided 

► Using System Admin, create your system, or 

► Install sample data base and experiment 


> Install OS/2 on Server, Clients (or use LAD/2) 

► Install Data Base 2 for OS/2 on Server, Clients 

► Don’t forget the lastest sen/ice - 7015 

> Install ImagePSus/2 on Server 

► Use CD-ROM 

► Include latest service from CompuServe 

► Work out your system on the Worksheets provided 

► Using System Admin, create your system, or 

► Install sample data base and experiment 

► For All Clients, several ways to install: 

► Build one and duplicate 

► Download from Server 

► Build each from CD-ROM 

► Don’t forget to register your clients 


IP02003 










System Admin / Examples 



► Fileroom 

► Users 

► Workfoaskets 

► Workflow 

► Devices 

Storage System 


Sample Configuration for 5 User Network 


► Hardware - Scanning Workstation 

► Value Point 433DX/D - $1610 

► Additional 12M Memory $800 

► XGA Monitor - 15" - $699/Adapter - $325 

► Mouse 

► Scanner -HP Scan Jet - $799 

► Network Card - $285 

► Hardware - Other Clients 

► Same without scanner - $3700 per client 

► Hardware - Server 

e ValuePoint Mini Tower - 450DX2/T - $2289 

► Monitor - $579 
Mouse 

► Optical Drive - $2000 

► Fax/Modem - $200 

► Printer - $499 

► Additional Memory - $800 

► Network Card - $285 


JgJ^lmagattua^ 



► Software 

► OS/2 - $224 

► DB 2 for OS/2 - $2495 - server 

► DB 2 for OS/2 - $75 per client 

► LAN Server/Req - $895 

► Fax PM - $99 

► lmagePlus/2 - $2495 server 

► lmagePius/2 - $395 per client 


Image Enable your Office for Under $30,000 !!! 


IP02007 


Sample Configuration 1 - Standalone 





► Hardware 

► Value Point 433DX/D - $1610 

► Additional 12M Memory - $800 

► 340 MB Fixed Disk -$200 extra 

► XGA Monitor - 15" - $699 

► Mouse 

► Scanner - SPJ - $599 

► Printer - HP LaserJet - $499 

► Fax/Modem (14.4) - $200 

► Optional Optical Drive - $2000 



Under$7600 I 


> Software 

O OS/2 - $224 

a- DB 2 for OS/2 Standalone - $495 

> Fax PM - $99 

► lmagePlus/2 - $2495 


IP02008 


Workflow Scenario #1 - University Applications 



Secretary 
Scan & Index 
Student apps, 
scores, letters, 
etc. 


Clerk creates student folder Each school reviews app, adds 
containing app, scores, etc., comments, makes recommend- 
sends to proper school ation (adds to folder) 

workbasket (suspends) 



generates letter to student 
with accept or reject; added 
to folder 


Electronic Fileroom 
maintains records for legal, 
audit, student inquiries 













► Workbasket Filter Support 

► Change Password 
Case Sensitive Search 

*, Performance Enhancements in Search & TOC Display 

► Incorporation of Visuallnfo Icons 

► National Language & DBCS Support 


Planned Additions to BmagePlus/2 


> Batch Scan/Multiple Page Scan 

> Process Support: Suspend/Activate, Check in/out, Priority, Routing 

> Workflow Support: Start, change, remove, complete 
u Work-basket full prompt support 

> Add Documents/folders to Existing Folders 

> Store Fax/Scan Documents in Existing Folders 

> Specify Class/Index Fields when adding to new folders 


IP02008 


Version 2 Additions 





► Twain Support ► Page Extraction from Existing Doc 

► System Admin Default Options ► Fax PM Support 

Native OS/2 Support for HP Scanners *- Installation Enhancements 
p- Import Print Driver ► Mail Integration (VIM Support) 

► Document View Window Menu Updates 

► Store/Retrieve Accelerators 

► Smport/Export Integration 


IP02010 



Available Toots and Sypport 



SmagePius Systems Today 


► Largest Image Software and Consulting Company 

► Over 1,300 customer installations worldwide 

► Broad spectrum of industries 

► From small business to large enterprise 

► Simple to complex applications requiring high performance 

► Integration with existing software applications 

► Range of Product Offerings to Meet Customer Requirements 

- Host 

► Departmental 

► LAN 

► Client/Server 

Tangible Customer Benefits 

► Process & productivity improvements 

► Cost reductions 

► Competitive advantage 

► Reduce paper mess 

► Improved customer service 

► Technology Differentiators 

► Mixed object library management 

► Imaging 

► Color imaging 

► Distributed object management 

► Advanced work management 


IP01004 


imagePSus Trends and Directions 



IP0200020 


ImagePlus Family 

► Document Architecture 

► System Managed Storage 

► Work Process Management 

► Image System Management 


► ImagePius/MVS ESA Folder Application Facility 

► imagePius/400 Workfolder Application Facility 

► Visuailnfo imagePius/2 

► Visuailnfo OS/2 Client 

► Visuailnfo OS/2 and MVS Servers 



IP01005 


































Why image Processing 



*• Clerical labor * Forma 
v Space ► Copies 

> Equipment u Couriers 


► Productivity v Business Besuits 

* Beapor.se Time ► DWemr.tiatior. 

► i.oaa Avoiriar.ee 
b Organization 


^ -7{hVr. Labor 
b Fioor Space 
t. -39% Storage Space 


«■ it riay reriuctior. > Market Snare 

> -7f«% Defects ^ *:9% Premium Price 

* *39% Verify Speed «, +3% Bepeat Business 

„ +20% Biiis/Cierk >. 2-riay Float 

> -59% Organization c +».% Customer Bat 


ip02015 



IPO1003 



...Really any object! 





► Information Versus Data: 

► Any object (image, text, voice, spread sheet, video...) 

► Information association (index, folder, context...) 

► Value of data is in the context 

► Worker Centered: 

► Intuitive interfaces 

► Personalized applications 

► Workstation application control 

► Customized / Ad hoc work management 

► Mo Paper Within / Between Enterprises: 

► Fax 

► EMAIL 


► Technology Without Limits: 

► Client / Server support 

► Scalability and performance 

► Open systems 


IP020010 



























IP02021 


ImagePlus 2000 Strategy Objectives 


Address all Customer Wants and Meeds 

► Provide Best-o!-breed Functionality 
s> Deliver State-of-the-art Technology 

► Converge to a Single Product Set 

► Supply an ImagePlus Family of Products that 

► Sell themselves 
- Drop-in install 

► Deliver VALUE out of the box 


Quality Focus 

Delight Our Customers By: 

► Building Instinctive-to-use Products 

► Providing the Desired Function 

► Delivering at the Required Time 

► Being Cost Competitive 

► Having Zero Defects 

► Providing Timely, Error-free Support 















High QyaSifiy Deveiopmeot 


































































Support Client / Server Requirements 


► Distributed Applications and Services 
s> Common System View 

► Local and Remote Transparency 
Portability 

► Configuration Flexibility and Scalability 
* System Management 


Application Development Support 


► Consistent Family CPIs 

s- Client / Server Environment 

► LOB integration 

Software <§* Services Development Kit 

► Extended Building Blocks 

► Object Oriented 


IP02030 


ImagePlus 2000 Data Model 



IP02031 



IP02019 


ImagePSus 2000 Strengths 





ImagePlus 2000 is an operational multimedia system 
driving competitive advantage through the capture, 
organization, management and distribution of all types of 
information on demand for business units of any size, 

► Distributed Multimedia Library 
b> Scalable Client Server 

► Open Environment 

► Robust image Processing 

► Application Dev. Environment 
s> Easy to Use and Manage 

► Functional Breadth: 

► Store/Retrieve to work process mgmt 

► Off the shelf to custom applications 


























LAN SERVER OVERVIEW 

TOPICS 

• PRODUCT EVOLUTION 
» LAN SERVER PACKAGING 
- A REVIEW OF LAN SERVER 2.0 
a LAN SERVER 3.0 FEATURES 
= PERFORMANCE COMPARISONS 
■ COMPLEMENTARY PRODUCTS 
» LAN SERVER DIRECTIONS 
» SUMMARY 


IBM L 


Where is LAN Server? 


r er one million LAN Server clier 


m 






















LAN SERVER 2.0 ENHANCEMENTS 


- OPERATOR RIGHTS 

- GENERIC ALERTER SERVICE 

- UN-INTERRUPTIBLE POWER SUPPLY SUPPORT 

■ GRAPHICAL ONLINE PUBLICATIONS 

■ LAN AWARE WORKPLACE SHELL SUPPORT (OS/2 
2.0 CLIENT) 

« ENHANCED WINDOWS SUPPORT (DLR CLIENT) 

- OEM HARDWARE SUPPORT 


IlM LAN Systems 


LAN SERVER REVIEW 

LAN SERVER 2.0 ENHANCEMENTS 
« ADVANCED SERVER 

- HIGH PERFORMANCE 

- LOCAL SECURITY 
-FAULT TOLERANCE 

- LAN ADAPTER AND PROTOCOL 
SUPPORT 

- IMPROVED PERFORMANCE 

- MULTIPLE CONCURRENT PROTOCOL STACKS 

- OS/2 REMOTE SPL 

- GRAPHICAL INSTALL TOOL 

IlM LAN Systems 


OS/2 LAN SERVER 3.0 
"new product Tea tures 


• . m &<:i 

. : \ . 

’ ’ ’ ••- .-SWk •'' ’ ' : 

• WTP KW PFP-56WCT : 

:.£N*;SiWGt£ ' 

ACVAhws&'smEawttt'R on ; 

* ENTftY SERVER PLUS _ 
xWxiHIGHPET^GRMANijfeFifilfi^S-YS-Tiiii^ 
. W •• 'w^KOY^-PAUtT T«L£TtANC£ 

- : -*f • bQGAb.SECtJRITY ; . 

x:|ii:xS£RS^^:ttOLTlPROCE^Off:::-:::-: 


: --0&2 OUSNT : fi«HANG6W6N;TS. • : • ; 

• .• V-•; •. 

• • .-•NT-S ; 2 : :- : :' • • • : \ 

.. - .••’ftwl <&i&\T “:x x ■' 

j: : A 

=! ^FOJWANCg ENHANC^e^ x 


: : : -CQM^EM£Nn:SRY:PROQUC-TS 
: Jltciw^bftbsi^x :Y: : :: 

: .V.. 

xttMUUtfcPRtt^^ 
p.LWWTPVfliff: • 

¥*Lancjistanqs: y 
x*<yra£H$v. • 


IlM LAN Systems 









































HPFS386 FILE SYSTEM 
« ENHANCEMENTS IN LAN SERVER 3.0 

- ENABLED FOR GT 16MB RAM 

- SIDEBAND SUB-PROTOCOL 

- INCREASED FILE HANDLE LIMIT (8K TO 64K) 

- INCREASED SEARCH HANDLE LIMIT (3K 10 8K) 

- 32-BIT RLE SYSTEM API SUPPORT 

- SMB 2.1 LEVEL DIALECT SUPPORT 

- UTILIZE OS/2 DASD MANAGER 

- SPM/2 HOOKS 

- BETTER ERROR RECOVERY 

- HOT FIX ON READ W/FAULT TOLERANCE 

IBM LAN Systems 




SPM/2 HOOKS 

■CACHE 

- # OF READS FROM CACHE 

- # OF READS FROM DISK 
-# OF WRITES TO DISK 

- # OF LAZY WRITES 

- # OF FORCED IMMEDIATE 
WRITES (NO FREE BUFFERS) 

- # OF CACHE BLOCKS 

- HEAP 

- TOTAL HEAP SPACE 

- MAX POSSIBLE HEAP 
ALLOCATION 

« RING-0 SERVER 

- 29 HOOKS 


. FILE MANAGEMENT 

-OPEN FILE COUNT 

- CLOSE COUNT 

- # OF FILES BEING WRITTEN 

- # CLOSED READ ONLY FILES 

- # CLOSED READ STRICTLY 
SEQUENTIALLY FILES 

. READ AHEAD 

-# CACHE BLOCKS READ BY 
READ AHEAD 

- # CACHE HITS ON BLOCKS 
READ IN BY READ AHEAD 

- # OF BLOCKS OVERWRITTEN 
BEFORE BEING USED 

- # OF WHOLE FILES READ IN 


IBM LAN Systems 


LAN SERVER ADVANCED 

DISK FAUL T TOLERANCE 


PROTECTION FROM DISK FAILURE 
° Fault Monitoring 
" Error Correction 

D Disk Mirroring - concurrent online backup 
■ Disk Dunlexinn - extends fault tolerance to drive controller 



NEW WITH LS 3.0 
Q Boot partition mirroring 

" "Mirroring on the fly" -- remirroring of repaired disk 
with only one step by the administrator 


IBM LAN Systems 


NTS/2 CONTENT 

- PROTOCOLS/DEVSCE DRIVERS/API's 

- 802.2 VDD/PDD SUPPORT 

- NETWARE CLIENT CO - EXISTENCE (ODI2NDI) 

- SIDEBAND NETBIOS SUB-PROTOCOL 

- OEM ADDITIONAL DRIVERS DISKETTE 

- ENHANCED MULTIPLE ADAPTER SUPPORT 

- CONFIGURATION/INSTALLATION 

- STANDALONE 1NSTALLNCONFIGURATION 

- CID ENABLEMENT 

- LAN CID UTILITIES 

- SUITE OF APPLETS 


IBM LAN Systems 







LAN SERVER 3.0 TRANSPORT 

NTS/2 ARGHTTECtUrE 



LAN SERVER 3.0 TRANSPORTS 

TCP/IP SUPPORT — — 



• REQUIRES TCP/IP FOR OS/2 AND NETBIOS FOR TCP/IP 
« BOTH PROTOCOLS CAN FLOW ON THE SAME LAN 
« NO RSPL SUPPORT 


IBM LAN Systems 


LAN SERVER 3.0 TRANSPORT 

ENHANCED MULTI-ADAPTER SUPPORT 


ALLOWS UP TO 1000 REQUESTERS PER SERVER ON A SINGLE NETWORK 



• ABILITY TO INSTALL ANY COR0B8NAHON - FOUR BUSISASTER CARDS, 
TWO TOKEN-RING, ETHERNET, PC LAN CARDS 


IBM LAN Systems 


LAN SERVER CLIENTS 
LAN SERVER REMOTE INSTALL 



IBM LAN Systems 














LAN SERVER CLIENTS 

OS/2 LAN SERVER 3.0 PEER SERVICES 



FUNCTION 

o SINGLE SESSION RESOURCE SHARING BETWEEN PEER WORKSTATIONS 

PACKAGING 

o INCLUDED WITH OS/2 CLIENT IN LAN SERVER 3.0 

CHARACTERISTICS 

• ONE RESOURCE ACCESS SESSION AT A TIME 

o NO LIMITS ON INTERPROCESS COMMUNICATIONS FACILITIES (NAMED PIPES) 
. USER OR SHARE LEVEL SECURITY 
. LOCAL OR REMOTE ADMINISTRATION 


ISM LAN Systems 


LAN SERVER CLIENTS 

LAN SERVER VIRTUAL DEVICE DRIVERS 



ISM LAN Systems 


LAN SERVER CLIENTS 

DOS LAN REQUESTER ENHANCEMENTS 


OS/2 [| 5 

S OS/2 LAN 

CLIENT 

JGL server 

< -- 


dos n 

fl II WINDOWS 

CLIENT ilia 

CLIENT 


« DOS CLIENT PERFORMANCE ENHANCEMENTS 

. INT21 FAST PATHS 

• DOS TRANSPORT ENHANCEMENTS 

. SIDEBAND 

. DOSBEUI 

• DECS SUPPORT FOR DLR WINDOWS CLIENT 

e DLR VIRTUAL DEVICE DRIVER (VDD) FOR OS/2 2.x 

IBM LAN Systems 


LAN SERVER CLIENTS 

DOMAIN MANAGEMENT API'S 

- ABILITY TO WRITE APPLICATIONS TO MANAGE 
THE DOMAIN CONTROL DATABASE 

- APPLICATIONS 

• PUBLIC 

. PRIVATE 

- ALIASES 

e FILE 
. PRINT 

• SERIAL 

oEXTERNAL 

- LOGON ASSIGNMENTS 

. FILE 
. PRINT 

• SERIAL 

. EXTERNAL 

. APPLICATION SELECTORS 


IBM LAN Systems 





































PERFORMANCE COMPARISONS 

LANQUEST LABS 

"IBM has improved the performance of LAM Server 3.0 so 
dramatically that, under 16 megabit-per-seeond Token Ring, 
LAM Server now edges out LAM Manager as the fastest of 
the three leading LAM operating systems - NetWare, LAM 
Manager, and LAN Server." 

- PERFORMANCE BENCHMARK COMPARISON 

- NOVEMBER 1992 

■ COPIES OF THE REPORT CAN BE OBTAINED 
THROUGH 1-800-IBM-4FAX. DOCUMENT 2347 
and 2349, 


IlM LAN Systems 


PERFORMANCE COMPARISONS 

LANQUEST LABS 



lUM LAN Systems 


irmance Benchmark Comparison 

ling Nine Business Application Performance Tests 


Note: Too many 
tests fa8«d to aflow 
reporting or remits 



PERFORMANCE COMPARISONS 

National Software Testing Laboratories 

"LAN Server had the highest Overall Performance Score on 
MSTL’s test configuration across all five (WordPerfect 5.1, 
Lotus 1-2=3, dBase IV, XCOPY, cc:Mail 3.2) application - 
based tests. (Comparing LAN Server 3.0 Advanced, LAN 
Manger 2.1a, and Netware 3.11)" 

■ Network Operating System Performance 
Comparison 

- November 1992 


IBM LAN Systems 
















PERFORMANCE COMPARISONS 

National Software Testing Laboratories 


i 

! 

! .i 

i iNO^en i leiwdtri j 1 

! 

Overall Performance Score 

1 

J J 

Microsoft LAN Manager 2 

IBM LAM Server 3 0 Advancer- 

J 

. 8 j 

C 

) 2 4 6 0 10 


IBM LAN Systems 


LAN SERVER CLIENTS 

IBM LAN SERVER SOFTCOPY LIBRARY 

m FOR USE WITH BQOKMANAGER READ (NOT 
INCLUDED) 

- SEPARATELY SOLD SOFTCOPY LIBRARY (96F8486) 

- INCLUDES THE SHIP-GROUP PUBLICATIONS IN BOOKMANAGER 
FORMAT 

. SEPARATELY SOLD HYPERTEXT APPLICATION 
PROGRAMMING REFERENCE 

... THIS ON-LINE PUBLICATION IS INCLUDED WITH THE HARDCOPY 
APPLICATION PROGRAMMER'S REFERENCE ALONG WITH 
SAMPLE PROGRAMS 


IBM LAN Systems 


a ADMINISTRATOR 

- NETWORK ADMINISTRATOR REFERENCES (VOLUMES 1,2, AND 3) 

- PROBLEM DETERMINATION REFERENCES (VOLUMES 1, 2, AND 3) 

- MASTER INDEX 

- PC LAN MIGRATION GUIDE 

i a a s cm innnnT nnnADflS! ! iocd’c !ir»c 
“ LHiY ourrun i rnuvan«ivi woun <j «wiul 

- PRODUCTIVITY AIDS 

- END-USER INFORMATION 

- OS/2 LAN REQUESTER USERS QUICK REFERENCE 

- DOS LAN REQUESTER AND DLR WINDOWS USER'S QUICK 
REFERENCE 

- ADDITIONAL ONLINE REFERENCES 


IBM LAN Systems 


COMPLEMENTARY PRODUCTS 

IBM OS/2 LAN SERVER FOR MACINTOSH 



IBM LAN Systems 











COMPLEMENTARY PRODUCTS 

MULTIPROCESSOR SUPPORT 



IBM PS/2 SERVER 295 


« ASYMMETRICAL MULTI-PROCESSOR ENVIRONMENT 

• PROVIDES GUARANTEED PROCESSOR CAPACITY TO 
APPLICATIONS RUNNING IN CONJUNCTION WITH THE ADVANCED 
SERVER 

* OFF-LOADS ADVANCED SERVER TO THE SECOND PROCESSOR 


IBM LAN Systems 


COMPLEMENTARY PRODUCTS 

LAN NETVlEW 

■ NETWORK MANAGEMENT 
>PERFORMANCE 


IBM LAN Systems 


COMPLEMENTARY PRODUCTS 

LAN FILE SERV1CES/ESA 

- EXTENDS WLFS/VM FUNCTIONS TO MVS 
■ REPLACES WLFS/VM FOR VM 

- LAN SERVER CLIENTS ACCESS HOST DATA DIRECTLY 

- MULTIPLE GATEWAY TO HOST CONNECTIVITY 
OPTIONS 

- CHANNEL ATTACH 

- TCP/IP 

- ACF/VTAM (3172-3 CONTROLLER) 

- COMMUNICATIONS MANAGER/2 (SNA) 

- ENABLES HOST BACKUP SCENARIOS 


IBM LAN Systems 


COMPLEMENTARY PRODUCTS 
wan comEcrmmr 

• LAN DISTANCE 

- Remote LAN Access 

■ NETBIOS FOR TCP/IP 

- TCP/IP Encapsulated NetBios 

- LAN-TO-LAN WAN 

- SNA Encapsulated NetBios 


IBM LAN Systems 











LAN SERVER DIRECTIONS 


LAN SERVER DIRECTIONS 


® FOCUS ON HW/SW 
INTEGRATION AND 
SINGLE SYSTEM 
IMAGE 

« ENHANCED PEER 
NETWORKING 
FUNCTIONS 



$ CONTINUED INVESTMENT IN 
LAN SERVER 
ENHANCEMENTS 

«, EXPLOITATION OF NEW 
TECHNOLOGIES 










IlM LAN Systems 



IBM LAN Systems 


OS/2 LAN SERVER 3.0 


PRODUCT SUMMARY 

. TWO PACKAGES 

- ENTRY AND ADVANCED 

- CLIENTS AND TRANSPORTS INCLUDED 

. LAN SERVER 2.0 FUNCTION PLUS... 

- ADVANCED SERVER ON OS/2 2.0 

- IMPROVED PERFORMANCE 

- IMPROVED TRANSPORT - NTS/2 

- TCP/IP SUPPORT 

- REMOTE INSTALL 

- OS/2 CLIENT PEER SERVICES 

- DLR VDD 

. COMPLEMENTARY PRODUCTS 

- MULTIPROCESSOR EXTENSION FOR THE MODEL 295 

- MACINTOSH CLIENT SUPPORT 


IBM LAN Systems 
















LS02 


IBM LAN SERVER 
DIRECTIONS 



Presentation Outline 

- LAN Server Evolution 
» Design Focus 

- Enhancements and New Technology 

- Summary 


ISM LAN Systems 


LAN SERVER DIRECTIONS 
For our legal department... 

Tfa© Mowing is a snapshot of IBM LAM Server’s current technological 
direction. This presentation is not a product announcement, nor does it 
imply a specific schedule or product commitment. IBM may change the 
Information contained In this presentation at any time. 



IBM LAN Systems 




LAN SERVER 

DESIGN FOCUS 

^PRESERVE CUSTOMER INVESTMENT 

■ ENHANCE EXISTING PRODUCTS 

■ PROVIDE A SINGLE SYSTEM IMAGE 3 

■ INTEGRATE HARDWARE/SOFTWARE PLATFORMS 
- LEVERAGE NEW TECHNOLOGIES 


mU LAN Systems 



LAN SERVER 

TECH NO L OG Y INTEGRA TiON 

TWO STEP PROCESS: 

1) ENABLE TECHNOLOGY PARTICIPATION 
(VIA AGENT OR TRANSLATION) 

2) MOVE BASE TO NEXT GENERATION OF 
TECHNOLOGY 



Allows customers to benefit from technological 
advances with minimum Investment while providing 
easy migration between old and new technologies. 


IBM LAN Systems 


LAN SERVER 

Preserving Customer investment thru: 


■ INTEGRATION AND COEXISTENCE 

- LAN SERVER "LEGACY” PRODUCTS 

- OTHER NOSs 

■ MULTI-PROTOCOL SUPPORT 
* OPEN SYSTEMS DIRECTION 

■ TWO STEP APPROACH FOR INTEGRATING TECHNOLOGY 


IBM LAN Systems 


LAN SERVER 

DESIGN FOCUS 

i'PRESERVE CUSTOMER INVESTMENT 
g ENHANCE EXISTING PRODUCTS 
■ PROVIDE A SINGLE SYSTEM IMAGE 



- INTEGRATE HARDWARE/SOFTWARE PLATFORMS 


■ LEVERAGE NEW TECHNOLOGIES 


SUM LAN Systems 





LAN SERVER ENHANCEMENT 






tglNi 
MM.Wm 


%,maF 3 


syfrx*g§filiil 


IBM LAN Systems 


Peering into the future 



* ONE SESSION AT A TIME 

* ONE PRINTER 

* ONE SERIAL DEVICE QUEUE 
, COMMAND LINE INTERFACE 


* MULTIPLE SHARED SESSIONS ^ 

* MULTIPLE SHARED DEVICES 
«■ DDE CLIPBOARD 

* COMMAND LINE INTERFACE 

» WORKPLACE SHELL MESSAGING 


o FILE AND PRINT SHARING 
« ODE CLIPBOARD (WINDOWS) 
« COMMAND LINE INTERFACE 
o GUI (WINDOWS) 




Why Peer Services? 



SHARING RESOURCES 

o PRINTER, SERIAL DEVICE AND FILES 
COMMUNICATING 
« MESSAGING 

• NETWORK DYNAMIC DATA EXCHANGE (DDE) AND CLIPBOARD 
LIGHTWEIGHT 

. LOW MEMORY AND DASD REQUIREMENT 

• EASY TO INSTALL AND USE 

• FLEXIBLE COMPLEMENT TO CLIENT/SERVER NETWORK 


IBM LAN Syste, 


LAN SERVER 

Design focus" q 

^PRESERVE EXISTING CUSTOMER INVESTMENT 
if ENHANCE EXISTING PRODUCTS 


^PROVIDE A SINGLE SYSTEM IMAGE S 

^INTEGRATE HARDWARE/SOFTWARE PLATFORMS 
■ LEVERAGE NEW TECHNOLOGIES 



IM LAN Systems 


IBM LAN Systems 








Multiprotocol Transport Services 


homogeneous ->heterogeneous networking protocols 



IBM LAN Systems 


Common Transport Semantics 


transport user transport user |transpprt u$e 



CTS includes: 

• Native flows for matched user and provider protocols 

• MPTN function compensation and address mappings 
for unmatched user and provider protocols 

® Function delivered by industry standards such as 
RFC 1001/1002 for NetBIOS over TCP 


IBM LAN Systems 


MPTS Networking Blueprint 



IBM LAN Systems 


LAN SERVER 





































tSM LAN Systems 


LAN SERVER AND DCE 

ARCHITECTURAL COMPARISON 


mmmt && 




ISM LAN Systems 


What is DCE? 



DCE Features - End User 


■ integrated Name Space 

- ALL DCE resources in same name space 

■ Integrated Security 

- in Remote Procedure Calls (RPC) 

- with users/groups/etc... 


LAN Systems 











DCE Features - Administrator 


0 Distributed File SystemManagement 

- Users/groups/accounts 

- Access Control Lists (ACL's) 

- Name Space 

- Distributed Time 


IlM LAN Systems 


DCE Functions 

■ Threads 

■ Remote Procedure Calls (RPC) 

b Global and Cell Directory Services 

■ Security 

■ Time Service 

■ Distributed File Service (DFS) 


IBM LAN Systems 


DCE Features ■ Developer 


a Network-Independent communication 
API's 

■ Built-in security 

■ Integrated namespace 

■ Easy to use client/server paradigm 

a Single source code for heterogenous 
machines 

■ Parallel processing control 

- Server threads 

- Client threads 

IBM LAN Systems 


Threads 

■ Uses OS/2 kernel level threads 
* Multiple execution flow in the same 
process 

- Easy communications between threads 

- Cheaper than processes 


IBM LAN Systems 


Remote Procedure Calls - RPC 


■ Proven means of distributing application 
execution 

■ Masks network complexity 

q Uses familiar programming paradigm 
a integrated with other DCE components 



Client Server 

IBM LAN Systems 


DCE Directory Services 

■ Comprehensive Directory Service 

a integrated with RPC's and with Security 

■ Replicated Databases 

- One Master, many Read Only copies 

- Updates by skulking 

- Can make a Read Only copy into the Master 

■ Backup/Restore methods 


IBM LAN Systems 


Two Tiers 

- Cell Directory Services (CDS) 

- Global Directory Services (GDS) 


cuuns» iui uyo 


Semen's’ DIR-X tor GDS 


■ Standards 

- CCITT X.500/ISO 9594 Directory Service 

- Internet DNS 

- X/Open Directory Service API 


IBM LAN Systems 


DCE Naming Conventions 


■ Global Names 

7.../<ce!l_name>/<dir_name>/<ob|_name>" 

"/.../ciaysceil/hosts/ciayb" 

"/.../Mandtebrot/fs/u/ctay" 

■ Local Names 
7.:/hosts/clayb" 

7.:/fs/u/clay" 

■ Local File System 
"/:/u/clay" 


IBM LAN Systems 























IBM LAN Systems 


DCE Time Service 



Precise, fault tolerant clock 
synchronization 
Origin: DEC'S Distributed Time 
Synchronization Service (DECdts) 



Standards: Interoperable with Internet 
NTP 


IBM LAN Systems 


DCE Security 

* Authentication of identities (private keys) 
» Authorization checking (ACLs) 

® Data integrity Verification (checksum) 

» Data Privacy (encryption) 





IBM LAN Systems 


Distributed File Services 


















Distributed File System 


■ Transparent access to remote files 

■ Two types of file systems 

- Local File System (LFS) (Episode) 

- other fife systems, NFS, Unix, etc. 

« LFS is an advanced file system 

- high performance 

- log-based 

- fast restarting 

- High Availability 

- Strong Security 

- Backup and Restore 

IBM LAN Systems 


Workplace OS 



Modular & Flexible 
a Based on Common System Elements 

► Specific Offerings for Different Markets 
a Taking Advantage of Commonality 

Modern OS Base, While Taking Existing Investment Forward 

► Open to industry 

« Other H/W Platforms. Other Personalities 

Multi-Application, Multi-Platform, Multi-Vendor 

IBM LAN Systems 


Distributed Print Management 


Framework (DPMF) 



OS/2 LAN SERVER 

SERVER 


IBM LAN Systems 


Workplace OS, OS/2 & AIX/6000 

Positioning 



- PC Heritage 


IBM LAN Systems 



















LAN SERVER DIRECTIONS 


* FOCUS ON HW/SW 
INTEGRATION AND 
SINGLE SYSTEM 
IMAGE 

• ENHANCED PEER 
NETWORKING 
FUNCTIONS 


j EttTRYyftJ 


um* r * 

j.\. Lan 


i 



® CONTINUED INVESTMENT IN 
LANSERVER 
ENHANCEMENTS 

® EXPLOITATION OF NEW 
TECHNOLOGIES 




ROfl 809 




















































































LS03/4 


0$/' IN SERVER 
; |jP5.ANP TECHNIQUES 

iOtN- SYSTEMS D EVE LQPM ENT 

Hit: i ;*2 



OS/2 LAN SERVER LOGON 

LAN SERVER LOGON: TOPICS 



TOPICS 



WHAT IS LAN SERVER LOGON? 


« VALIDATE USER ID AND PASSWORD 

- REGISTER USER ID AND PASSWORD WITH LOCAL CLIENT 

* ENFORCE SINGLE LOGON 

- ADD A SPECIAL NETBIOS NAME: <domainname><userld> 

- ADD ADDITIONAL NETBIOS NAMES 

_ CLIENT NAME, DOMAIN NAME, MESSAGING NAMES 

- ESTABLISH USER LOGON ATTRIBUTES 

- LOGON RESOURCE ASSIGNMENTS 

- LAN SERVER APPLICATIONS 

. REGISTER USER ID AND PASSWORD WITH UPM 


















OS/2 LAN SERVER LOGON 

LEVELS OF LAN SERVER LOGON 


OS/2 LAN SERVER LOGON 

TIPS FOR SPEEDING UP LOGON 




REDUCE NETBIOSRETRIES FROM 8 TO 1 

SAVES 3.5 SECONDS PER NETBIOS NAME ADDED 

OTHER TECHNIQUES FOR SPEEDING UP LOGON 

ll 

DON'T RUN THE MESSENGER SERVICE 

SET MULTILOGON TO YES 

CHANGE ADDITIONAL SERVERS TO BACKUP ("NET ACCOUNTS 
USE LOCAL LOGON (AS OF LS 3.0) 


NOTE: LOGON PERFORMANCE IN LS 3.0 IS IMPROVED 


OS/2 LAM SERVER LOGON 

LOGON AND ACCESS CONTROL 


OS/2 LAN SERVER LOGON 
WHAT IS USER PROFILE MANAGEMENT? 


« IF I AM LOGGED ON ; I GET NO REMOTE PRIVILEGE 

TH& LOGON IS A PROCESS FOR REGISTERING A USER ID AND PW IN 
LOCAL CUENT TO BE USED IN SUBSEQUENT RESOURCE 
REQUESTS 

- IF I AM CONNECTED TO A RESOURCE, I GET NO 
PRIVILEGE 

- HAVING A CONNECTION TO A SERVER SIMPLY SAYS I AM A VALID 
USER ON THAT SERVER NETWORK PROTOCOL FLOWS ARE EXACTLY 
THE SAME FOR CONNECTING TO A SERVER WITHIN OR OUTSIDE 
YOUR DOMAIN 

■ ACCESS CONTROL IS ENFORCED WHEN A RESOURCE 
!S OPENED 































OS/2 LAN SERVER LOGON 


CLIENT EMULATED SINGLE LOGON 

- AT LOGON, YOUR USER ID AND PASSWORD ARE REGISTERED 
WITH BOTH THE LS REDIRECTOR AND USER PROFILE 
MANAGEMENT {UPM) 

. AT DOMAIN LOGON, THE LS CLIENT WILL ATTEMPT TO VALIDATE 
WITH A PREVIOUSLY REGISTERED USER ID AND PASSWORD 
FKOSr yirisw 

. COMMUNICATIONS MANAGER AND DATABASE MANAGER FROM 
EXTENDED SERVICES WILL ALSO ATTEMPT TO VALIDATE WITH A 
PREVIOUSLY REGISTERED USER ID AND PASSWORD 



ISSUE A LOCAL LOGON JUST AFTER BOOT. IF 
YOUR USER ID AND PASSWORD IS VALID ON ALL 
SUBSYSTEMS, YOU WILL NOT BE PROMPTED FOR 
YOUR PASSWORD AGAIN 


CONNECTING TO RESOURCES 

Issues 




NET 

SHARE 


OS/2 LAN SERVER LOGON 

NET SESSION VS NET WHO 


A USER WHO IS LOGGED ON MAY NOT HAVE A SESSION 

A USER WHO HAS A SESSION MAY NOT HAVE BEEN 
VALIDATED BY THIS DOMAIN 


if IF YOU ARE GOING TO BRING DOWN A SERVER 
pf SEND A MESSAGE TO THE "Nfc i SESSION" US i 


LS 3.0 CREATES THE "NET WHO" LIST BY POLLING 
THE SERVERS IN THE DOMAIN FOR THEIR ACTIVE 
SESSIONS. 



CONNECTING TO RESOURCES 


SINGLE SYSTEM IMAGE 


* USERS 

* RESOURCES/DIRECTORY 
» APPLICATIONS 

* LOGON ASSIGNMENTS 


















































CONNECTING TO RESOURCES 

LAN SERVER DIRECTORY SERVICE 


* ALIASES ARE THE LAN SERVER 
DIRECTORY TECHNOLOGY 

- SINGLE SYSTEM VIEW TO RESOURCES ON MULTIPLE 
SERVERS IN A DOMAIN 

- LOCATION INDEPENDANCE 

- RESOLVES TO \\SERVERNAME\NETNAME 

- DEFINE SHARE CONFIGURATION FOR ALL SERVERS 
IN A DOMAIN 

- DEFINE USER LOGON CONNECTIONS 

- SIMPLIFY BROWSE AND CONNECT 


CONNECTING TO RESOURCES 

BROWSE TECHNIQUES ~ ~~~ 


a BY ALIAS 

- FSI OR COMMAND LINE 

- VIEW A SINGLE LIST FOR ALL RESOURCES IN A 
DOMAIN (SINGLE SYSTEM IMAGE) 

- CROSS DOMAIN SUPPORT 

■ BY SERVER 

- FSI OR COMMAND LINE 

- VIEW A LIST OF SERVERS THEN VIEW A LIST OF 
RESOURCES ON THE SPECIFIC SERVER 

- CROSS DOMAIN SUPPORT 


CONNECTING TO RESOURCES 

VIEWS OF RESOURCES 


CONNECTING TO RESOURCES 

CONNECTION TECHNIQUES 



; ALIASED RESOURCES 

i ; 

: SHARED, 

not : 

ALIASED j 


AT 

SERVER 
! STARTUP 

ASREQ. AT ADMIN.i_ v __ DK1 . j 
BY USER i ACTION ETERNAL 

! LISTS OF ALIASES 

(BY DOMAIN) i 

. FULL SCREEN INTERFACE ! 

• NET ALIAS 

V" 

| 

i : i 

| ■ 

j ( 

j LIST OF SHARED RESOURCES! 
(BY SERVER) 

s FULL SCREEN INTERFACE 
| • NET VIEW Wservername 

! 

: v \ 

: i i 

IN USE ; SHARED; SHARED! 
ONLY ONLY ONLY ; 

V 

j 

1 j 


. DEVICED CONNECTION 

- ASSIGN A LOCAL VIRTUAL IDENTIFIER TO THE REMOTE RESOURCE 

- APPLICATIONS ARE UN-AWARE OF RESOURCE LOCATION; THE 
REMOTE RESOURCE APPEARS TO BE LOCAL TO THE CLIENT 

- CONNECTION BY AUAS OR BY SERVER 

- IMPLICIT CONNECTION 

- NO EXPLICIT CONNECTION TO VIRTUAL ID 

- CONNECTION IS ESTABLISHED AUTOMATICALLY 

- CONNECTION BY SERVER ONLY, ANY SERVER IN ANY DOMAIN 

- LOCATION OF RESOURCE IS FIXED; APPLICATION MUST BE UNC 
ENABLED AND AWARE OF THE RESOURCE LOCATION 


* ONLY IF CURRENTLY SHARED 





CONNECTION STEPS 



CONNECTING TO RESOURCES 

HOW ~MANY WA YS CAN YOU CONNECT TOA 
RESOURCE? 


1. NET COMMAND - NET USE 

a BY ALIAS OR BY SERVER, ANY DOMAIN 

2. FULL SCREEN INTERFACE - RESOURCE ASSIGNMENTS 
. BY ALIAS OR BY SERVER, ANY DOMAIN 

3. LOGON - LOGON RESOURCE ASSIGNMENTS 
- BY ALIAS ONLY, ANY DOMAIN 

4. LAN SERVER APPLICATION LAUNCH TIME 

□ BY ALIAS ONLY, ANY DOMAIN 

5. OS/2 NETWORK OBJECT 

* BY ALIAS AND BY SERVER, ANY DOMAIN 

6. DIRECT ACCESS VIA UNC 

=> EXAMPLE: COPY \\SERVER\NETNAME\FILE.EXT 

7. APPLICATION RUN TIME USING APIs 
a NetUseAdd (BY SERVER ONLY) 

o DosOpen UNCName ...... 

□ OS/2 GENERIC LAN APIs (BY ALIAS OR BY SERVER, ANY DOMAIN) 


CONNECTING TO RESOURCES 

HOW MANY WA YS CAN A RESOURCE BE 
SHARED? 



1. NET COMMAND - NET SHARE 

. AT THE SERVER OR REMOTE USING NET ADMIN 
„ by ALIAS IN CURRENT DOMAIN OR BY SERVER IN ANY 
DOMAIN 

2. FULL SCREEN INTERFACE - START SHARING SECTION 

h FROM ANY OS/2 CLIENT LOGGED ON TO THE DOMAIN 

. BY ALIAS OR BY SERVER IN THE CURRENT DOMAIN 

3. LOGICAL SERVER - AT SERVER STARTUP 

. ALIAS TYPE "AT SERVER STARTUP" 

4. LOGICAL SERVER - AT NET USE TIME 

° ALIAS TYPE "AS REQUIRED BY USER 

5. APPLICATION - NetShareAdd 



CONNECTING TO RESOURCES 

CONNECTING TO RESOURCES WITHIN THE 
CURRENT DOMAIN 



m 

WITH THE FULL SCREEN 

WITH THE COMMAND LINE 

mm 


NET ALIAS 


pi 

- OR - 

NET USE device aliasname 


SELECT FROM A LIST OF SERVERS 

-OR- 

mm 

NET VIEW 

mm 

SELECT FROM A LIST OF NETNAMES* 

NET VIEW Wservername ** 

mm 



NET USE device \\servername\netnam< 



> ALIASED EXTERNAL RESOURCES ARE AVAILABLE IN THIS LIST 


** "AS REQUIRED BY USER" ALIASES WILL APPEAR ONLY IF 
CURRENTLY SHARED {IN USE) 































































CONNECTING TO RESOURCES 

OUTSIDE YOUR DOMAIN 


m 

WITH THE FULL SCREEN 

WITH THE COMMAND LINE 

ill 

KEY IN SERVER NAME* 

NET VIEW Wservername * 

ip 

SELECT FROM A LIST OF 

NET USE device \\servername\netname [pw] 

:;*:P 

NETNAMES 

-OR - 

la 


NET USE device \\servemame\netname [pw]** 


" PRIOR KNOWLEDGE OF SERVER NAME REQUIRED 
** PRIOR KNOWLEDGE OF SERVER NAME AND NETNAME REQUIRED 


III CONNECTING TO "AS REQUIRED BY USER” ALIASES 
111 OUTSIDE YOUR DOMAIN IS ONLY POSSIBLE IF THE 
p RESOURCE IS CURRENTLY SHARED 


CONNECTING TO RESOURCES 


RESOURCE NA VIGATION AND CONNECTION 
WITH OS/2 2.0 


LS SERVER CONTAINER 





CONNECTING TO RESOURCES 

OTHER CONSIDERATIONS 


BY SERVER CONNECTION TECHNIQUES CAN BE 
USED TO CONNECT TO ALIASED RESOURCES BY 
USING THE ALIAS AS THE NETNAME 

- NET USE Q: \\SERVERNAME\AL1AS 

- COPY \\SERVERNAME\ALIAS\DIR\FILE.EXE 



USE ’’SHARE AT SERVER STARTUP" TYPE ALIASES 
FOR RESOURCES THAT WILL BE ACCESSED USING 
"BY SERVER" TECHNIQUES 


CONNECTING TO RESOURCES 


TECHNIQUES USING OS/2 2.0 WORKPLACE 
SHELL 



NAVIGATE: 

NAVIGATE USING THE NETWORK 
OBJECT TO A RESOURCE 


CONTINUE NAVIGATION 
TO THE OBJECT VIA 
THE NETWORK OBJECT 


ASSIGN A LOCAL LOGICAL 
ID TO THE REMOTE 
RESOURCE 

CONTINUE NAVIGATION TO 
THE OBJECT VIA THE 
FILES FOLDER 


-—— THEN --- 

CONFIGURE: 

SHADOW THE REMOTE OBJECT INTO 
A FOLDER ON YOUR DESKTOP 


























































OBJECTS SHADOWED FROM SERVERS ARE CLIENT SPECIFIC 

SHADOWED OBJECTS REMAIN WITH A MACHINE AND DO NOT MOVE WITH 
A USER'S LOGON 

OBJECTS DEFINED WITH UNCs ARE DETERMINISTIC 

OBJECT WILL POINT TO SAME SERVER REGARDLESS OF LOGON DOMAIN 

OBJECTS DEFINED WITH REDIRECTED LOCAL IDs ARE FLEXIBLE 

^'‘T" CONFIGURE ALL DOMAINS TO HAVE A COMMON SEnVICES SERVER ’ 

W& WITH ALL USERS HAVING THIS RESOURCE AS A LOGON ASSIGNMENT 
TO THE SAME DRIVE 

——■■ - - 

REMOTE DOS APPLICATIONS MUST BE DEFINED USING REDIRECTED LOCAL IDs 

OS/2 2.0 WILL ATTEMPT TO RESOLVE A UNCTO A DEVSCED CONNECTION 
ALL OS/2 OBJECTS WORK TO ANY NETWORK PROVIDER 


CONNECTING TO RESOURCES 


TIPS REGARDING CONNECTIONS 



CONNECTING TO RESOURCES 


RESOURCE NA VIGA TION AND CONNECTION 
WITH WINDOWS 


WINDOWS FILE MANAGER 



MORE TIPS REGARDING CONNECTIONS 


gg§ 

USE THE HIDDEN DRIVE LEVEL SHARES 

ill 

(\\SERVERNAME\C$) 

mm 

DON’T WORRY ABOUT LOSING YOUR 

ill 

CONNECTION TO A SERVER. IF THE 
CONNECTION BECOMES AVAILABLE AGAIN, LAW 
SERVER WILL AUTOMATICALLY RECONNECT 

m 

IF YOUR DEFAULT PASSWORD IS NOT VALID TO A 


SERVER OUTSIDE YOUR LOGON DOMAIN, PUT 

111 

THE VALID PASSWORD ON THE END OF THE NE T 


USE COMMAND 


















































CONNECTING TO RESOURCES 

DIFFERENT PASSWORDS ON NET USE 


ARRANGING SERVERS 
TOPICS AND ISSUES 





DASD 

REQUIRE¬ 

MENTS 


DOMAIN 8 
STRUCTURB 


ARRANGING SERVERS 

SERVER ROLES 


ARRANGING SERVERS 

ENTRY VS ADVANCED 


. DOMAIN CONTROLLER (REQUIRED) 

- USER DATABASE ROLE: PRIMARY 

- SOURCE OF NET.ACC REPLICATION AND DOMAIN LOGON ACCOUNT 
VALIDATION 

- HANDLES ALL DOMAIN CONTROLLER DATABASE (DCDB) REQUESTS 

* ADDITIONAL SERVERS (OPTIONAL) 

- USER DATABASE ROLE: MEMBER OR BACKUP 

- TARGET OF NET.ACC REPLICATION 

- ADDITIONAL SERVER IN BACKUP ROLE WILL ASSIST DOMAIN 
CONTROLLER WITH DOMAIN LOGON ACCOUNT VALIDATION 

- OPTIONAL TARGET OF DCDB REPLICATION 


■ ENTRY - ADVANCED 

- RUNS AT THE SAME PRIVILEGE - RUNS AT THE SAME PRIVILEGE 

LEVEL AS APPLICATIONS LEVEL AS THE OS/2 KERNEL 

- BEST SUITED FOR CO-EXISTING - BEST SUITED FOR DEDICATING 

WITH OTHER SUBSYSTEMS ALL THE POWER OF A MACHINE 

- AN ENTRY SERVER CAN BE A TO LAN SERVER 

USER'S DESKTOP MACHINE - AN ADVANCED SERVER 

MACHINE SHOULD BE 
DEDICATED TO REMOTE DEVICE 
SHARING 





















ARRANGING SERVERS 

OTHER SERVER ROLES 


ARRANGING SERVERS 

ARRANGING DOMAINS 


■ RJPL SERVERS 

■ APPLICATIONS SERVERS 

■ DEDICATED VS MULTI-PURPOSE 
(MUL fl-sUBSYsTbM) 


DOMAINS ARE GROUPS OF SERVERS WITH COMMON USER DEFINITIONS 

DOMAINS PROVIDE SINGLE SYSTEM IMAGE NAMESPACE SERVICES TO 
ITS USERS 


m GR0UP SERVERS THAT HAVE A COMMON SET OF 
||||| REGULAR USERS INTO DOMAINS 


SERVERS HAVE REGULAR USERS (RESOURCE OWNERS) 

SERVERS WHOSE REGULAR USERS RARELY USE OTHER SERVERS SHOULD 
BE DOMAINS CONTROLLERS IN SINGLE SERVER DOMAINS 

LOOK FOR PATTERNS WHERE GROUPS OF USERS USE THE SAME GROUPS 
OF SERVERS 


Ifl PROVIDE OCCASIONAL USAGE SUPPORT WITH THE GUEST 
||| ACCOUNT INSTEAD OF ADDING OCCASIONAL USAGE USER IDS 


MANAGING SERVERS 

TOPICS AND ISSUES 


MANAGING SERVERS 

SERVER MANAGEMENT TECHNIQUES 



■■1 11 | I ill tm 







■ ■ 

QUEUES 


DEVICES 


STATUS 


mm 


COMMAND LINE AND FULL SCREEN INTERFACES ARE AVAILABLE TO 
BOTH ADMINISTRATORS AND USER OPERATORS 


"TPI T S gR E Br 


mm 


m 




command line; 


MANAGING USERS 

USER PROFILE MANAGEMENT 
AND 

LS FULL SCREEN INTERFACE 

NET USER* 

MANAGING PRINT 
QUEUES 

PRINTER OB JECT 
(OS/2 2,13 & 2.1) 

NET PRINT 

MANAGING SERVER 

anm 

NET SHARE 

STATUS 

(ADMINISTRATOR ONLY) 

NET START 

MANAGING SERIAL 
DEVICES 

mil 

NETCOMM 


LAN SERVER SPECIFIC USER ATTRIBUTES CAN ONLY BE MANAGED FROM THE FSI 






























MANAGING SERVERS 

MANAGING ACCESS CONTROL 


MANAGING SERVERS _ 

CROSS DOMAIN USER MANAGEMENT 


gjigjjjij 

USE THE PARTITION ACL (C:) INSTEAD OF 

III 

APPLYING THE ACL ON THE ROOT (C:\) 


CREATE ACCESS CONTROL POLICIES AND 

ill 

CREATE GROUPS THAT CORRESPOND TO THOSE 


POLICIES 

IP 

GRANT ACCESS PRIVILEGE TO USERS BY ADDING 

SH! 

THEM TO GROUPS 


GIVE THE GUEST ACCOUNT ACCESS TO 


RESOURCES THAT ARE NOT SECURITY SENSITIV E 


TO SIMPLIFY CROSS DOMAIN SUPPORT 


[§§§ 



- USERS (AS OF LAN SERVER 3.0) 

mkz 

■ ADMINISTRATORS AND ACCOUNTS OPERATORS 

mm 

m 

USE THE DOMAIN SWITCH OF "NET PASSWORD" 

n 

USE NET ADMIN (ADMINISTRATORS ONLY) 

m 

SOME LAN SERVER SPECIFIC USER ATTRIBUTES 

m 

CAN ONLY BE MANAGED IN THE CURRENT DOMAIN 


- LOGON ASSIGNMENTS 


■ APPLICATION GROUPS 

ip 

LOGOFF AND LOGON TO THE DOMAIN YOU WANT TC 


MANAGE 


WAN CONNECTIVITY 

using IBM LAN DISTANCE 


WAN CONNECTIVITY 
using LAN DISTANCE 




















































































NETBIOS FOR TCP/IP 



LAN SERVER WITH 
NETBEUI AND 
NETBIOS FOR 

~r n : s ir> 


m 



f.Owww.-i 

‘r 1 - - . 
































WAN CONNECTIVITY 

NETWARE CLIENT CO-EXISTENCE 


WAN CONNECTIVITY 
SHORT TERM TRENDS 


LAN SERVER WITH 



* THERE ARE LOTS OF ROUTERS THAT 
UNDERSTAND TCP/IP AND IPX 

* MORE BRIDGE/ROUTERS ARE BEING 
DEVELOPED THAT UNDERSTAND 
NETBIOS AND HOW TO ENCAPSULATE IT 
IN ROUTABLE PROTOCOLS 

* MULTIPLE PROTOCOL SUPPORT UNDER 
A SET OF COMMON PROGRAMMING 
INTERFACES IS COMING 


WAN CONNECTIVITY 
Networking Blueprint 


LAN Server Tips and Techniques 

summary . . 



Applications 

Multivendor 
Application Support 

Multiprotocol 

Networking 

Sufenetworking 
Systems Management 


» LAN SERVER LOGON 
« CONNECTING TO RESOURCES 
a ARRANGING SERVERS 
« MANAGING SERVERS 
a WAN CONNECTIVITY 


Physical 

































OS/2 LAN SERVER SECURITY 

LAN SECURITY ISSUES 


Hit mm lam server 

SECURITY 

■ ■ - Development 



a WORKSTATION SECURITY 
» REMOTE RESOURCE ACCESS CONTROL 
» DATA MONITORING 
« DATA MODIFICATION 




lliiliis 


OS/2 LAN SERVER SECURITY 

LAN SERVER SECURITY DESIGN FOCUS 


° REMOTE RESOURCE ACCESS CONTROL 
- LAN SERVER SECURITY MODEL 

- USER IDENTITY VALIDATION WITH PASSWORD 

- ACCESS CONTROL LIST ON EACH SHARED 
RESOURCE 


OS/2 LAN SERVER SECURITY 

TOPICS 


. LAN SERVER SECURITY DESIGN 

- IDENTIFICATION AND AUTHENTICATION 

- ACCESS CONTROL 
* AUDITABILITY 

»ALERTS 









































LAN SERVER SECURITY DESIGN 

PROTECTING SERVER CAPABILITIES 


LAN SERVER SECURITY DESIGN 

HOW DOES A CLIENT GET A SESSION? 


LAN SERVER SECURITY PROTECTS SERVER 
CAPABILITIES FROM UNAUTHORIZED REMOTE ACCESS 

- TO ACCESS SERVER RESOURCES, A REMOTE CLIENT 
MUST HAVE A NETBIOS SESSION 

- TO OBTAIN A NETBIOS SESSION, A REMOTE CLIENT 
MUST HAVE A VALID USER ID AND PASSWORD 

- ONCE A SESSION IS OBTAINED, THE SERVER 
CORRESPONDS REQUESTS RECEIVED ON THAT 
SESSION WITH THE USER ID THAT ESTABLISHED THE 
SESSION 


A CLIENT SENDS A SESSION SETUP REQUEST TO A 
SERVER 

THE SERVER "CHALLENGES” THE IDENTITY OF THE 
USER ON THE CLIENT 

- THE CLIENT STORES A DEFAULT USER ID AND 
PASSWORD REGISTERED AT LOGON TIME THAT IS 
USED DURING THE SERVER CHALLENGE 

- THE USER MAY OVERRIDE THE DEFAULT PASSWORD 

- THE CLIENT IS CAPABLE OF STORING MULTIPLE 
PASSWORD FOR A SINGLE USER ID 






■■w 


LAN SERVER SECURITY DESIGN 

LAN SERVER CHALLENGE PROTOCOL 


LAN SERVER SECURITY DESIGN 

HOW DO USERS REGISTER THEIR UID? 


PASSWORDS DO NOT FLOW ON THE WIRE AT SESSION 
SETUP 

- THE CLIENT REQUESTS A SESSION 

- THE SERVER SENDS A RANDOM NUMBER TO THE 
CLIENT 

- THE CLIENT ENCRYPTS THE RANDOM NUMBER WITH 
THE USER’S PASSWORD (FROM THE LOGON PANEL). 

- THE SERVER ENCRYPTS THE RANDOM NUMBER 
WITH THE USER’S PASSWORD (FROM NET.ACC) AND 
COMPARES ITS RESULT WITH THE RESULT FROM 
THE CLIENT 


THE DEFAULT USER ID AND PASSWORD ARE 
REGISTERED USING "DOMAIN TYPE" LOGON 
THERE ARE THREE TYPES OF "DOMAIN TYPE" LOGON 
-NO VALIDATION 
- LOCAL VALIDATION 
-DOMAIN VALIDATION 

ALL TYPES OF "DOMAIN LOGON" WILL ALSO REGISTER 
THE USER ID AND PASSWORD WITH UPM 



1 



■HK 




















LAN SERVER SECURITY DESIGN 

USER PROFILE MANAGEMENT (UPM) 


Identification and Authentication 

USER ACCOUNT DATABASE 


- LOGON SHELL 

- OS/2 LAN SERVER CLIENT 

- COMMUNICATIONS MANAGER 

- DATABASE MANAGER 

. GRAPHICAL USER INTERFACE FOR MANAGING USER 

DEFINITIONS 

- NET USER AT THE COMMAND LINE WITH LAN 
SERVER 

« UID/PW REGISTRATION FOR SINGLE LOGON 
EMULATION 


EVERY LAN SERVER HAS A USER ACCOUNT DATABASE 

- USER AUTHENTICATION IS ALWAYS CHECKED LOCALLY AT A 
SERVER 

- DOMAINS ARE FORMED VIA ACCOUNT DATABASE REPLICATION 
RATHER THAN 3RD PARTY AUTHENTICATION WITH A REMOTE 
VALIDATION SERVICE 

- THE ADVANTAGE OF THIS IMPLEMENTATION IS THAT NO SERVER IS 
DEPENDENT ON A REMOTE VALIDATION SERVICE TO PERFORM 
AUTHENTICATED ACCESS CONTROL ON SHARED RESOURCES 

- THE DISADVANTAGE OF THIS IMPLEMENTATION IS THAT 
SYNCHRONIZATION OF THE DATABASE IS NOT GUARANTEED 








Identification and Authentication 

SINGLE SYSTEM IMAGE 


Identification and Authentication 

USER TYPES 



- ADMINISTRATOR 

- ACCESS TO ALL LAN SERVER OBJECTS 

- ACCESS TO ALL LAN SERVER CAPABILITIES 
. USERS 

- SUBJECT TO ACCESS CONTROL 

- OPERATORS 

- SUBJECT TO ACCESS CONTROL 

- AUTHORIZED FOR CERTAIN ADMINISTRATOR 
CAPABILITIES 

- DEFINED VIA THE LAN SERVER COMMAND LINE 
INTERFACE 



Mp!i||||ii ||Mms 
































































Identification and Authentication 


Identification and Authentication 

OPERA TOR PRIVILEGES USER ACCOUNT GROUPS 


» ACCOUNTS OPERATOR 

- MANAGE USERS AND GROUPS 
« SERVER OPERATOR 

- MANAGE ALIASES AND OTHER SHARED RESOURCES 
* COMM OPERATOR 

- MANAGE SERIAL DEVICES 
. PRINT OPERATOR 

- MANAGE PRINT QUEUES AND JOBS 


« USERS CAN BE COLLECTED INTO GROUPS TO SIMPLIFY 
THE MANAGEMENT OF ACCESS CONTROL 
■ DEFAULT GROUPS 

- ADMINS 

- USERS 
=GUESTS 

- LOCAL 

* GROUPS CAN BE GIVEN THE SAME PRIVILEGES AS 
USER ACCOUNTS 



Bystems 



BiPlliiiilii Wms 


Identification and Authentication ACCESS CONTROL 

Logon and Resource Connection FUNCTIONS 


No specific privilege is granted at logon time 

Your User ID and PW are validated again at the time you make a connection 
request to a remote resource 

Since the Password you supplied at logon time is used at resource 
connection time, resource connection to a server in your iogon domain 
should always be successful but is not guaranteed 
Resource connection to a server outside your logon domain wii! also be 
successful if the Password you supplied at logon is also valid in the 
externa! domain 

A different Password can be supplied at resource connection time 


AUTHORIZES ACCESS TO RESOURCES 
IMPLEMENTED VIA ACCESS CONTROL LISTS (ACLs) 

ACLs STORED IN NET.ACC FOR FAT PARTITIONS, HPFS PARTITIONS 
(ENTRY SERVER), PRINTERS, SERIAL DEVICES, AND IPCs 
ACLs STORED IN FILE SYSTEM FOR HPFS386 PARTITIONS 











































































































ACL PER PROTECTED RESOURCE 


» ACL ON EACH PROTECTED RESOURCE 

- FILES, DIRECTORIES, PARTITIONS 

- PRINTERS 

- SERIAL DEVICES 

- IPCs 

. SPECIFIES AUTHORIZED ACCESS PERMISSION FOR USERS AND 
GROUPS LISTED 

. DEFAULTS TO NO ACCESS; NO ACL. NO ACCESS 
. SPECIFIES AUDIT TRAIL RECORDING FOR RESOURCE ACCESS 
tt CONCURRENT USER CONTROL (USE COUNT) 



ACCESS CONTROL 
PERMISSIONS 


® N - HO ACCESS 
« X- EXECUTE 
a R- READ 
- W- WRITE 
B C - CREATE 
«D - DELETE 
« A - ATTRIBUTES 
« P - PERMISSIONS 


ACCESS CONTROL 

FLOWCHART 



ACCESS CONTROL 

ACCESS CONTROL 386 HPFS 


« FILE ACL3 STORED IN FILE SYSTEM STRUCTURE 

* OTHER ACLs STORED IN NET.ACC 

« ACLs NOT LIMITED (PREVIOUSLY LIMITED TO 16,000) 
a 386 HPFS CAN BE LOCALLY SECURE 
. ACLs INHERITED LOCALLY FROM PARENT 
« DRIVE-LEVEL ACLs SUPPORTED 

* ACLs REMAIN WITH RENAMED DIRECTORY 

« ACLs DELETED WHEN DIRECTORY DELETED 














ACCESS CONTROL 

ADVANCED SERVER LOCAL SECURITY 


ACCESS CONTROL 
LOCAL SECURITY 



* RESTRICTS ACCESS TO LOCAL FILES ON 386 HPFS PARTITIONS 

* PROTECTS 386 HPFS FILES DURING BOTH REMOTE AND LOCAL ACCESS 
« RESTRICTS CALLS TO APIs BASED ON OPERATOR PRIVILEGES 

■ 386 HPFS FILES REMAIN INACCESSIBLE IF SERVER STOPPED OR NOT 
STARTED 

- 386 FILE AND DIRECTORY AUDITING STARTS AT WORKSTATION 
POWER-ON 

« BOOT DISK MUST BE 386 HPFS PARTITION 



PiimiiUpns 





ACCESS CONTROL 
SECURE SHELL 


ACCESS CONTROL 

LOCAL GROUP 


PUTS SERVER INTO SECURED MODE 
STARTS PRIVILEGED SERVER PROCESSES 

EXECUTES PRIVILEGED CMD.EXE TO INTERPRET PRfVILEGED.CMD FILE 
AT SYSTEM INITIALIZATION 
STARTS NORMAL USER SHELL 

USED TO DETERMINE IF ADMIN VALIDATION REQUIRED DURING 
RECOVERY FROM 386 HPFS BOOT DISKETTE 


* REPRESENTS LOCAL USERS OF SERVER 
- LOCAL USER GAINS PERMISSIONS GRANTED TO LOCAL 
GROUP 

■ LOCAL LOGGED-ON USER HAS PERMISSIONS GRANTED 
TO USERID/GROUPID PLUS PERMISSIONS GRANTED TO 
LOCAL GROUP 

« REMOTE LOGGED-ON USER DOES NOT GAIN LOCAL 
GROUP PERMISSIONS 































































ACCESS CONTROL 

PRIVILEGED PROCESSES 


AUDITABILITY 

’functions 


ALL PROCESSES SUBJECT TO FILE ACCESS PERMISSIONS 
CONTROLLED BY PRIVILEGE OF LOGGED ON USER OR LOCAL GROUP 
MANY PROCESSES RELY ON HAVING UNRESTRICTED ACCESS 
TWO METHODS TO START PRIVILEGED PROCESSES 

- SYSTEM INITIALIZATION (PUT COMMAND IN PRIVINIT.CMD FILE) 

- OS/2 COMMAND PROMPT (TYPE PRIV FOLLOWED BY COMMAND) 


SERVER CONFIGURED FOR RESOURCE AUDITING 
AUDITING OPTIONS 
-AUDIT ALL EVENTS 
-AUDIT NO EVENTS 

- AUDIT EVENTS SPECIFIED IN LIST 

- DO NOT AUDIT EVENTS SPECIFIED iN LiST 



■I imMmms 



mummmms 


AUDITABILITY 
AUDIT TRAIL 


AUDITABILITY 

AUDIT TRAIL INFORMATION 


» CONTAINS INFORMATION ABOUT RESOURCE USE AND 
SECURITY 
- USED FOR: 

- ACCOUNTING 

- SECURITY 

- NETWORK USAGE 

- PROBLEM DETERMINATION 


« SERVER START/STOP STATUS 
« LOGONS WITH USER TYPE INDICATED 
« LOGOFFS WITH DISCONNECT REASON 
« ACCESS START/STOP WITH REASON 
« NET USE START/STOP 
. ACCESS WITH RESOURCE AND OPERATION 
« ACCESS PERMISSION VIOLATIONS 
* INCORRECT PASSWORD CHANGES 
. CHANGES TO USER/GROUP DEFINITION FILE 
. CHANGES TO RESOURCE ACCESS PERMISSIONS 




























AUDITABILITY 

AUDITING EXAMPLES 


■ NET START SERVER / AUDITING : YES 

- KEEPS AN AUDIT TRAIL OF ALL EVENTS 

« NET START SERVER / AUDITING : LOGON; USERLIST; 
RESOURCE 

- KEEPS ONLY LOGON, USER LIST AND RESOURCE 
EVENTS IN AUDIT TRAIL 

« NET START SERVER / AUDITING : YES / NOAUDITING : 
SERVICE 

- KEEPS ALL EVENTS EXCEPT SERVICE EVENTS IN 
AUDIT TRAIL 


WAfflSystems 


AUDITABILITY 

CONTROLLING AUDITING OF EVENTS 

• GRANULARITY TO SUBDIRECTORY AND FILE LEVEL 
■ NET ACCESS AUDITING OPTIONS 

- AUDIT SUCCESSFUL ACCESSES 

- AUDIT FAILED ACCESSES 

- AUDIT SUCCESSFUL ACCESSES OF SPECIFIC TYPE 

- AUDIT FAILED ACCESSES OF SPECIFIC TYPE 


AUDIT TRAIL MONITORING 



AUDITING 






AUDITING ACCESS CONTROL 


. ACCESS TYPES 

- ALL: AUDIT ALL ACCESS TO RESOURCE 

- OPEN: AUDIT OPENS OF RESOURCE 

- WRITE: AUDIT WRITES TO RESOURCE 

- DELETE: AUDIT DELETION OF RESOURCE 

- ACL: AUDIT CHANGES TO RESOURCE ACCESS 
CONTROL 











































ALERTS 
TYPES OF ALERTS 


ALERTS _ 

CUSTOM ALERTS PROCESSING 


. LOCAL ALERTS GENERATED ON SERVER (ALERTER SERVICE) 

» SECURITY ALERT CONDITIONS 

- AUTHENTICATION FAILURES 

- RESOURCE ACCESS FAILURES 

- LOGON HOURS EXCEEDED 

- DC AUTHORIZATION FAILURE 

a ALERT NOTIFICATION SENT TO DESIGNATED USERS (VIA LAN SERVER 
MESSAGING) 

« ALERT TRANSMISSION TO NETVIEW OR IBM LAN NETWORK MANAGER 

- REQUIRES GENERIC ALERTER SERVICE 


* ALERTS CAN BE GENERATED BY ANY APPLICATION 

- NetAlertRaise 

« ANY APPLICATION CAN MONITOR INTEREST IN ANY ALERT 

- NetAlertStart 

- NetAlertStop 

« PREDEFINED LAN SERVER ALERT EVENTS 

- ALERT PRINT EVENT 

- alertIadminIevent 

- ALERT_MESSAGE_EVENT 

- ALERT_USER_EVENT 

- ALERT_ERRORLOG_EVENT 







! LAN Systems 


OS/2 LAN SERVER SECURITY 

COMPLIMENTARY SECURITY PRODUCTS 


. CONTROLLING ACCESS TO THE NETWORK 

- IBM 8230 CONTROLLED ACCESS UNIT 

- IBM LAN NETWORK MANAGER 

- IBM 8250 MULTIPROTOCOL INTELLIGENT HUB 

. ADVANCED ETHERNET MANAGEMENT MODULE 
. BASIC TOKEN-RING MANAGEMENT MODULE 
. PROTECTING DATA 

- IBM TRANSACTION SECURITY SYSTEM 

- IBM 4755 CRYPTOGRAPHIC ADAPTER 


OS/2 LAM SERVER SECURITY 

SECURITY DIRECTIONS 


. DISTRIBUTED COMPUTING ENVIRONMENT 

- KERBEROS VALIDATION PROTOCOLS 

* PROTECTS AGAINST SERVER IMPERSONATION 

- COMMON, TRUSTED AUTHENTICATION SERVERS 

- SOPHISTICATED REGISTRY AND DIRECTORY 

- SINGLE LOGON, PASSWORD 

- POSIX CONFORMANT PROGRAMMING INTERFACES 
TO ACLS 

- SECURE RPC 

- GENERIC SECURITY SERVICE API 




LAN Systems 





































OS/2 LAN SERVER SECURITY 

SECURITY DIRECTIONS 


OS/2 LAN SERVER SECURITY 

SECURITY DIRECTIONS 


CONVERTING LAN SERVER TO DCE SECURITY 

- UPM USER DEFINITIONS WILL BE MIGRATED INTO 
THE DCE USER DEFINITION FACILITY; USERS WILL BE 
VALIDATED BY KERBEROS STYLE 
TICKETS/CREDENTIALS 

- LAN SERVER DOMAINS WILL BE INTEGRATED INTO 
DCE CELLS 

- LAN SERVER RESOURCES WILL BE ABLE TO BE 
PROTECTED USING POSIX CONFORMANT ACLs 

- REMOTE ADMINISTRATION FUNCTIONS WILL USE 
SECURE RPC 


GOVERNMENT SECURITY CERTIFICATION STATEMENT 
OF DIRECTION 

- OS/2 WILL BE C2 COMPLIANT 
LAN SYSTEMS SECURITY STRATEGY: 

- DISTRIBUTED "C2+" SINGLE SYSTEM IMAGE 

• AN C2 SECURITY LEVEL EVALUATION PROCESS 
DOES NOT YET EXIST FOR DISTRIBUTED SYSTEMS 






IHii ;M$ Systems 


Additional information _ _ LAM SERVER SECURITY 

Where to go for more Information SUMMA R Y 


a IBM OS/2 LAN SERVER V3.0 
APPLICATIONS PROGRAMMER’S 
REFERENCE (S96F-8440-GQ) 

- CLIENT-SERVER PROGRAMMING 
WITH OS/2 2.0 2ND EDITION (ORFALI 
& HARKEY) 

■ IBM SECURITY ARCHITECTURE 
SPEC. SHEET (G221-3528-00) 

* IBM LAN SYSTEMS STATEMENT ON 
PROTOCOL INTEGRITY, 14 OCTOBER 
1992 



■ IDENTIFICATION AND AUTHENTICATION 
- ACCESS CONTROL 
» AUDITABILITY 
* ALERTS 
. DIRECTIONS 




































L AH SYSTEMS DEVELOPMENT 
ISM Austin 


OS/2 LAW SERVER 3.0 PERFORMANCE TUMNG 


LAN SERVED 3,0 PERFORMANCE 


ENABLED FOR H«MB MEMORY WITROSS* 8.1 i 

- LAS ABAPTER SUPPORT RgOUfflEO 

- Am OPEN FILE INFO >1SMB FOE? ALL ADAPTORS 

, SIDEBAND SUB*PROTOCOL 

- »xi exolmsiv*, patw tmmm 
-IWiiWVe&TRAN»»«rSWFER^fZee^MA>.l«f>'l«> 

- mm ON 0$tf, OUR SPOTS AND APVAWe&^NVE« 

, FASTER DOS HffiTRIOS WCLUDING HEMS SUPPORT 

. DOS LAN REQUESTER CODE SCRUB 

|||||gj||^^ -.v.,,.. jm.| 


im server performance 

p - TOPICS 

♦ PERFORMANCE ENHANCEMENTS 

• - CAPACITY ENHANCEMENTS 
. TUNING CONSIDERATIONS . 

. PERFORMANCE COMPARISONS 


LAN SERVER 3 M PERFORMANCE 


* IMPROVED MULTI-ADAPTER SUPPORT 

. - MULTIPLE ADAPTERS ON SAME LAN SEGMENT 
•, ~ AUTOMATIC SESSION LOAD BALANCING 
- INCREASED SERVER THROUGHPUT 

* INCREASED FILE HANDLE LIMIT 

* - FROM 8KTO MK WEN FILE HANDLES 






? mi 


lilMWi 









TUNING CONSIDERATIONS 


► SERVER TUNING 

* TO? 3 PERFORMANCE PARAMETERS for 
ANY OS/2 LAN SERVER 

- 1) CACHE - Allocate as modi cache as possible 

- 2> NUaftEQS VFS - 3 Per Ses$Ktf» 

~ 3>NUMBIG*BUFS - Check NET STATISTICS to see 
ll stiver l$ tanning wit 


Tufting Considerations 

► Why Entry Server? 

* Dedicated Prim Serving 

* Systems with Only PAT Pile System 
Partitions 

■ * Systems Sharing Only Serial Devices 

* Servers Only Verifying Logon 


SERVER TUNING 

► MAXIMUM NUMREQBUFS Formula 

UmmiM iSlUMBEOBUFS * 

[ 591 IS - 4*(&IAXUSERS) - 
5S9*(nuin_adapters in server) - 
$H min{2*MAXUSERS>1283 ) - 
$7*NUMBiGBUFl/§? 

LAN Systems \ 










► ENTRY SERVER TUNING • 

* OBSERVE SERVER BEHAVIOR IN 
ACTUAL LOAD SITUATIONS 

_ j^ggogggirg iwgnis wb i f ^ecs £ rd@d 

• - tfc# NET ERROR and NET STATISTICS eamntahds 
~ Using memory for cache wilt yield belter ^ 

peftarmaoce than aver resetting ragbufa of 
higbufs; tuna reqbate and bigbufs eoth*t thay ara; 
barely exhausted during highest load conditions. j 


TUNING CONSIDERATIONS 


* CACHE VS VBiSK 

* CACHE IMPROVES PERFORMANCE IF 
THE SAME DATA IS ACCESSED 

REPEATEDLY 

* CACHE IS NOT AS HELPFUL IF . 
DIFFERENT DATA IS REOUESTED AT •; 
EACH REQUEST 


TUNINO CONSIDERATIONS: 


*■ OS/2 FILE SYSTEM TUNINO 

. A$$f$N CACHE FOR FAT RARTITJONSTO 
KSKCACHE.EXE 

. ummtft # pat aafitmosis- &*m 

. ASSIGN CACHE FOR HPFB PARTITIONS TO . . 

HPFSJPS 

- MAXIMUM CACHE SHE; SMB 

« ALLOCATE AS MUCH MENORV FOP CACHE AS 
POSSIBLE 

- REGOMMESD fcfflfJlMUSI OF 6MB f 08 16MB MACHINE 

» IF APPLICATIONS PERFORM BETTER WITH LABOR j 
CACHES, ACCESS- BATA FROM A FAT PARTITION 
il: ; . WITH A LAROE CACHE : ASSSGNEBTOOiSKCACHE 1 



mmmmmmm 













advanced server wmm 

* Enfry m Advanced Toning 

Consicf^fpioiTS 

- The Advanced Server only supports life requests 
tar fifes stored or an HPFS386 partitions? ail older 
re<juesteere stl dandled by Use Entry Server /.: 
» FAT Fife System requests : 

IM#li#SM®iiilliil!^SIII!#ii^^ 

* Serial Efevteee 

«• Tire Entry Server must be toned even mi art 
Advanced Server for its resources supported by ' i 
the Enlry Server 



tuning nfs/2 and neisios 

« ALLOCATE NETBIOS RESOURCES (PROTOCOLS 
NETBEULNIF SECTION) 

-sE$sfe»$ 

; - «08«- (z T8@£S SESSiOfiS 10 a roa* «rf 700 war afi adajrter csr« 

~8ame& 

-ttfeSEFARAMETff^IifeSTeeOffeATEBTMAM 1M VALUES « 
iBMUfeiNI OS T«E APWOFWTE 8ET* LINE 

- art «ei»os «^ucatio«s wusr m oatse^BEo 

{C8*e, OB/i, Lute Slates, ete.) 




I0QON PERFORMANCE 

, INCREASE the T1 TIMES VALUE (on server) on .! 
WANS Of SERVERS EXPER^ICBVO SESSION ISMS 




* advanced server FILE SYSTEM 

1 1 * ASSIGN CACHE IFOR HRFSS86 
PARTITIONS TO 0 ACHEmEXE 

- DEFAULT CACHE SCE: M% OP AVAILABLE 
MEMORY 

- SUPPORTS CACHE SIZES OREATERTHAN1SMB 

: - ADVANCED SERVER PERFORMANCE 
BENEFITS ARE ONLY REALIZED ON 
HPFS 3 B 6 PARTITIONS 
- ALLOCATE AS MUCH MEMORY FOR 
CACHE AS POSSIBLE 
* RECOMMENDED MINIMUM OF SMB FOR 16MB ’’ ■ 
HI MACHINE llSIIllllllillli : '"'ll 


TUNING CONSIDERATIONS 


* MEMORY MldBMIZATION ON CLIENTS ' 

.«o$/2 client Si!l!l!iiiSiillJ!l®iliHll 

- REDUCE ffiaWGHKBUF TO & fF WOT BUWHtSQ MULTIPLE OS® 
SESSIONS 

" {MATCHT?iESETFtM©-ATTtffi 

S£BV£f& 

- 8 SMA&K OUT « 6 T« 0 S, 0 $a (8 OofeKLSYe tf 80 OTBEB 

. • SETffiOS APPtiCATIGHS ARE BUfJfflWS 

£ $eT FWTeCTMCt TO VEsicowi&sysHPooA supports 
fTDT REQUIRED 


















TUNING CONSIDERATIONS ■ 

* OTHERTECHNIQUE 

* KEY DOCUMENTATION 

- ls 3.0 network administrators ref* vql 2; 

* OSSiRVi THE SYSTEM 

* SYSTEM PERFORMANCE MONTTOR/a 2.6 or 
NejVtew Monitor 

♦, SERVER ERROR LOOS AND STATISTICS 

- cacheshs monitoring utility 

, USE NETWORK ANALYZERS TO: 

- DETECT UNUSUAL ARPUCATON BEHAVIOR 

- ISOLATE SOURCES OF NETWORK LOAD 

» CAPTURE ERRORS 

- MEASURE UNE UTIMBAftON 


TUNING CONSIDERATIONS- 

* TOOLS 



OMFOLS 30 

» TUNING LAN SERVER 3.6 IS EGUfYAU0VT TO 
TUNWG LAN SERVER 2 jS 
* CAN WE CNFGLS39 FOR LS 2.6 OR tS 3.6 
. IT WAS WRITTEN IN CONJUCTON WITH TOE . . 

DEVELOPMENT TEAM 

» AVAILABLE ON OS/2 BBS or COMPUSERVE (within 
mmmMKTWQim 


TUNING CONSIDERATIONS 

:3Sil 

* ENTRY SERVER CONSIDERATIONS; 

- EAT CACHE (66 SKCACME) 

* 14 . 4 MSMajctowm 

* THRESHOLD UP f0 S4KS 

4 os/a m adcs lazv writs 

- HFFS CACHE (CACHED 

. -s.mm m&mm 

, THRESHOLD 0? TOS4&& 

« lASTWWfm 
-WMUtt'MNS 

* *ftJ**REQ8VFS C R2B ACTWB CLIPC} 

* H¥»8i©8VFS6S PER ACTIVE COBNT} 

- PROTOCOUNI 
-SESSIONS 
,«CBS 




* SUMMARY 

* ADVANCED STIVER CONSIDERATIONS 

-HFFS3S6 CACHE SIZE 

* SYSTEM DEFAULTS TO 20% 

* CACHE SIZE mwm ONLY BY AVAILABLE 
MEMORY IN TOE SYSTEM 

- CACHE3RB MONITORING UflWTY 
» FINE TONE CACHE S&E 

- MONITOR CACHE HIT RATOS 

- numregbufs 

» s per SESSION ;p|||iIii|:li!;l|IMlil 

.' * CHECK NET ERRORS 


















COMPARISONS 


LANQUgST LABS 

"li« has Improved the pertororoee of 1AM Server 3.0 #o 
dramatfcaJly that, trader U magablt^w<eeeowl Token 
M»g, LA Pi Server now edges o«f LAM Mmsgat miSm 
fastest of the three feadtag LAJf operating systems - 
NetWare, LAM Manager, and LASS Server,” 

« PERF^WANCEBe^HWsWKCCWAR^N 

:;• * =14^.::; | |jS ^:j=: if k :ftl: 

» COPIES OP THE REPOSTT CAH BE OiTAMEO ' 

1 WCWOH 1 -S 0 CMBKMFAX oootwir 2347 

d 2340 . 


Hill pg^0R»iAHCE.Cal<8PA^I8.ONS i 1111111 

Nallomst Software Testing Laboratories • 

(, U*M Server had the highest Overall Performance Score on 
SJSJVs lest cefflBgamtfen across m fwe ^WordPerfect £1, 

- Lofets 1-2-3, dBase IV, xcopy, cc:Mail 3.2} appicasion ■ • 
based tests. (Ownparteg im Server $.0 Mroneed, tm 
Manger 2.1a, sad Safware3.il)" 































lah mmm H performance 


performance comparisons 


Overall Performance Score 


Novell Netware 3.11 



* SUMMARY 

* PERFORMANCE ENHANCEMENTS 
. CAPACITY ENHANCEMENTS 

* TUNING CONSIDERATIONS 

'• * PERFORMANCE COMPARISONS 













LS07 


IBM'S REMOTE LAN ACCESS 
CAPABILITY 


Frank Grubbs 
LS07 

IBM LAN Systems 
Austin, Texas 


LAN Distance Overview 


LAN DISTANCE REMOTE 

LOTUS NOTES 
TERMNAL BjOJLATON 
RLE PR NT REQUESTER 
OTHER CLENT SETW 51 APPS 


NETWARE SBWER 



Features / Ease of Use 
Cost Per Connection 




BM LAN SERVffl 
NOTES SERVBt 




(ISON) a(ed Service a 9 it! >l Network 


AGENDA 

REMOTE LAN ACCESS TECHNOLOGY 
LAN DISTANCE FEATURES 
FUTURE DIRECTIONS 
• IMPLEMENTATION EXAMPLES 


SUMMARY 




















1 


REMOTE LAN ACCESS TECHNOLOGY 

► REMOTE CLIENT 

- EXTENSION TO CLIENT/SERVER 
APPLICATION 

► REMOTE CONTROL 

- HOST PC FOR APPLICATION 

- MAPS SCREEN / KEYBOARD TO REMOTE 

► REMOTE NODE 

- EXTENDS LAN TO REMOTE 

- HARDWARE / SOFTWARE SOLUTIONS 



■ ENABLES A WORKSTATION NOT PHYSICALLY 
CONNECTED TO A LAN TO DIAL-IN AND OPERATE AS 
IF IT WERE ON A LAN 

■ ENABLES CREATION OF A VIRTUAL LAN FOR 
POINT-TO-POINT ENVIRONMENTS 

■ TWO CONCURRENT CONNECTIONS SUPPORTS 
CREATION OF VIRTUAL NETWORKS (OS/2) 



LAN DISTANCE 
COMPONENTS 


► REMOTE 
-OS/2 
-WINDOWS 

► CONNECTION SERVER 
-OS/2 

-CONNECTION SERVER 
- CONNECTION SERVER (8 PORT) 



LAN DISTANCE 
CONNECTION SERVER 



■ ESTABLISHES A CONNECTION AND ROUTES TRAFFIC 
BETWEEN THE LAN AND WAN 

■ ENFORCES SECURRY ON/OFF THE UN 

■ MANAGES THE "OUTER” NETWORK 

■ PROVIDES AUDIT TRAILS AND ADMINISTRATION 
■TWO VERSIONS 

-CONNECTION SERVER 
-CONNECTION SERVES (8 PORT) 







LAN DISTANCE 

SUPPORTED CONNECTIVITIES 

► LOCAL AREA NETWORK 
-TOKEN RING & ETHERNET 

► WIDE AREA NETWORK 
-ASYNCHRONOUS 
-SYNCHRONOUS 

► SWITCHED 

„ mqu switched 

— ISDN 

- BASIC RATE 

> PRIMARY RATE 
“X.25 

- CBX/PBX (ROLM) 

► NDIS INTERFACE (LAN/WAN) 




► NETBIOS 

► NETBEUI 

► 802.2 

* ND1S/ODS 

► IPX 



1 Meg File Copy Time 

(Avg 8 Clients) 


Elapsed Time (Minutes) 



MSRAS DCARLN Shiva LAN Distance 
Remote Access Product 





























LAN DISTANCE 
SECURITY OPTIONS 

► USER ID/PASSWORD 

► CALL BACK 

► PASSWORD ENCRYPTION 

► WORKSTATION ADDRESS IDENTIFICATION 

► VALID LOGON TIME INTERVALS 

► UNAUTHORIZED LOGON LIMIT 
►ACCESS PRIVILEGE LEVELS 

► CONFIGURABLE LOGON PARAMETERS 

► INITIAL APPLICATION EXIT 

► LAN APPLICATION SECURITY 



LAN DISTANCE 
ADMINISTRATIVE FEATURES 

► CALL STATUS DISPLAY 

► ERROR LOGGING 

► AUDIT/SECURITY LOGGING 

► STATISTICS LOGGING 

► REMOTE INFORMATION RETRIEVAL 

► INTERNAL EVENT TRACING 














LAN DISTANCE 
USER INTERFACE 

OBJECT ORIENTED GRAPHICAL INTERFACE (OS/2 
2.X, CUA91) 

-CONFIGURATION 
-DIAL/CALL STATUS 
-ADMINISTRATION 
-HELPS 

INSTALLATION 

-QUICK INSTALLATION OPTION 
-C/I/D ENABLED 

-INSTALL FROM DISKETTE OR LAN 

SHUTTLE BETWEEN LAN AND REMOTE ATTACHED 
ENVIRONMENTS 


LAN DISTANCE 

Phone Book and Call Status Screen 



LAN DISTANCE 
NEW FEATURES RELEASE 1.1 


► WINDOWS CLIENT 

► LAN WORKSTATION 
-DIALOFF LAN 
-CASUAL BRIDGING 

► ENHANCED CONNECTIVITY 
-ASYNCHRONOUS 
-SYNCHRONOUS 
-ISDN 

-X25 

-ADDITIONAL ADAPTERS & MODEMS 

► PERFORMANCE & USABILITY 


LAN DISTANCE 
FUTURE DIRECTIONS 

► ADDITIONAL CLIENT SUPPORT 

► ENHANCED SECURITY 

► ENHANCED CONNECTORS 

► PERFORMANCE 

► FEATURES & EASE OF USE 


► EVALUATION SUPPORT 














IMPLEMENTATION EXAMPLES 



PROGRAMMER - WORK AT HOME 


LOTUS NOTES 
LAN REQUESTER 
COMMUNICATIONS MGR / 2 
COMPILERS & DEBUGGERS 
SOURCE LIBRARY SYSTEM 




IBM LAN SERVER 
NOTES SERVER 


NOTES SERVER 

TIME AND PLACE SERVER 


8 W 


rnur 


LOTUS NOTES 
CC MAIL 

IBM TIME AND PLACE 



NETWARE SERVER 


REMOTE ADMINISTRATION 


NETWARE ADMIN 
LAN SERVER ADMIN 
NOTES ADMIN 
SPM/2 

LAN NETV1EW 
REMOTE CONTROL 


LOTUS NOTES 
SERVER 



LAN DISTANCE 

CONNECTION 

SERVER 





















DISTRIBUTED MEETINGS 


REMOTE L0CAL 

MEETING ROOM MEETING ROOM 


PERSON-TO-PERSON 



LAN DISTANCE 
SUMMARY 


- CONNECTIVITY 

-ETHERNET AND TOKEN RING 

- ASYNC, SYNC, ISDN, X.25 

-PC ADAPTER AND DEVICE DRIVER 
-APPLICATION TRANSPARENCY 
n PERFORMANCE 
a SECURITY 

-USER ID AND PASSWORD 
-CALLBACK 

-TERMINAL ADDRESS IDENTIFICATION 
-LOG ON POLICIES 
-SECURITY ADMINISTRATOR 
=. FEATURES & EASE OF USE 
-GRAPHICAL USER INTERFACE 

- LOCAL / REMOTE ADMINISTRATION 
-LAN/WAN SHUTTLE 

-COSTPER CONNECTION 

- ENTRY OPTION WITH NON DEDICATED SERVER 

- LARGE NUMBER OF CONCURRENT SESSIONS 










LS08 


INTEROPERABILITY WITH 
LAN SERVER 3.0 


LAN SYSTEMS DEVELOPMENT 
IBM Austin 



MIGRATION 
MIGRA TION SCENARIOS 
. LAN SERVER 1.0 TO 3.0 

- USE THE LAN SERVER MIGRATION UTILITY 

- LAN SERVER 1.X, 2.0 TO 3.0 

- NET.ACC AND THE DCDB ARE THE SAME 

- NO SPECIFIC MIGRATION STEPS REQUIRED 

. ENTRY TO ADVANCED 

- RUN BACKACC THEN RESTACC ON THE HPFS 
PARTITIONS TO MIGRATE THE ASSOCIATED 
ACLs FROM NET.ACC TO THE HPFS386 
PARTITION 


SBM LAN Systems 


Interoperability W/LAN Server 3.0 

TOPICS ”. 

■ MIGRATION 

. INTEROPERABILITY WITHIN FAMILY 
. INTEROPERABILITY OUTSIDE FAMILY 
- CO-EXISTENCE WITH OTHER NOSs 


ISM LAN Systems 


interoperability Within Family 

Family Clients to LAN Server 3.0 

. PCLP TO LAN SERVER 3.0 

- PCLP EXTENDED SERVICES CLIENTS CANNOT LOGON TO 3.0 
DOMAINS 

- PCLP CLIENTS CAN ACCESS RESOURCES ON 3.0 SERVERS 

. LAN SERVER 1.0 CLIENTS TO 3.0 

- LAN SERVER 1.0 CLIENTS CANNOT LOGON TO 3.0 DOMAINS 

- LAN SERVER 1.0 CLIENTS CAN ACCESS RESOURCES ON 3.0 
SERVERS 

* LAN SERVER 1.2 - 2.0 CLIENTS TO 3.0 

_ LAN SERVER 1.2 - 2.0 CLIENTS CAN LOGON TO 3.0 DOMAINS AND 
ACCESS RESOURCES ON 3.0 SERVERS 

- BOTH DOS AND OS/2 CLIENTS 


SBX LAN Systems 



Interoperability Within Family 

LAN Server 3.0 Clients to Family Servers 

■ TO PCLP SERVERS 

- 3.0 CLIENTS CANNOT LOGON TO PCLP SERVERS/DOMAINS 

- 3.0 CLIENTS CAN ACCESS SHARED RESOURCES ON PCLP 
SERVERS 

* TO LAN SERVER 1.0 SERVERS 

- 3.0 CLIENTS CANNOT LOGON TO 1.0 DOMAINS 

- 3.0 CLIENTS CAN ACCESS SHARED RESOURCES ON 1.0 SERVERS 

■ TO LAN SERVER 1.2 - 2.0 SERVERS 

- 3.0 CLIENTS CAN LOGON TO 1.2 - 2.0 DOMAINS 

- 3.0 CLIENTS CAN ACCESS SHARED RESOURCES ON 1.2 - 2.0 
SERVERS 


IBM LAN Systems 


Interoperability Outside Family 

Different Clients to LAN Server 3.0 

- LAM SERVER 3.0 SUPPORT THE 2.1 SMB 
DIALECT AND ITS PREVIOUS VERSIONS 

- SMB DIALECTS ARE DOCUMENTED IN THE 
"X/OPEN SMB PROTOCOL SPECIFICATION, V2" 

- LAN SERVER 3.0 CAN SUPPORT 
RESOURCE REQUESTS FROM SMB 
COMPLIANT CLIENTS 

- MICROSOFT LAN MANAGER 

- LAN MANAGER OEM CLIENTS 

- WINDOWS FOR WORKGROUPS 
-ETC. 


Interoperability Within Family 

FMmTsERVERS Jn 3.0 DOMAINS 

- LAN SERVER 1.0 SERVERS CANNOT BE 
IN 3.0 DOMAINS 

■ LAN SERVER 3.0 CAN BE THE DOMAIN 
CONTROLLER FOR MIXED LEVEL 
DOMAINS 

- LAN SERVER 1.2 THROUGH LAN SERVER 2.0 

- LAN SERVER 3.0 CAN BE AN 
ADDITIONAL SERVER IN A DOWN LEVEL 
LAN SERVER DOMAIN 

- THE DOMAIN CONTROLLER CAN BE LAN 
SERVER 1.2 THROUGH 2.0 

IBM LAN Systems 


Interoperability Outside Family 

LAN Server 3.0 Clients to Other Servers 

« TO MICROSOFT LAN MANAGER SERVERS AND 
GENERAL LAN MANAGER OEM SERVERS 

- 3.0 CLIENTS CANNOT LOGON TO L.M. STANDALONE SERVERS 

- 3.0 CLIENTS CAN LOGON TO LAN MANAGER DOMAINS (NO 
LOGON ASSIGNMENTS OR APPLICATION GROUPS) 

- 3.0 CLIENTS CAN ACCESS RESOURCES ON L.M. SERVERS 

- TO MICROSOFT WINDOWS FOR WORKGROUPS 
PEERS 

- WFWG PEERS USE SHARE LEVEL SECURITY 

- 3.0 CLIENTS CAN ACCESS RESOURCES ON WFWG PEERS 

* TO GENERAL SMB SERVERS 

- 3.0 CLIENTS CANNOT LOGON TO GENERAL SMB SERVERS 

- 3.0 CLIENTS CAN ACCESS RESOURCES ON GENERAL SMB 
SERVERS 


IBM LAN Systems 


IBM LAN Systems 



Interoperability Outside Family 

SMB Servers in LAN Server Domains 

- GENERALLY, ONLY LAN SERVERS 
SHOULD BE !N LAN SERVER DOMAINS 

- NETLOGON WILL REPLICATE FROM LAN 
SERVER TO LAN MANAGER 

- A LAN SERVER ADDITIONAL SERVER WILL NOT 
START IN A DOMAIN WHERE THE DC IS A LAN 
MANAGER SERVER 

- ALIASES CANNOT BE DEFINED FOR LAN 
MANAGER SERVERS IN A LAN SERVER DOMAIN 


IBM LAN Systems 


Interoperability Outside Family 

IpcmmoPERABiufY — 

- NETBIOS 

- APPLICATIONS UTILIZING IBM AND MICROSOFT 
NETBIOS IMPLEMENTATIONS GENERATE NATIVE 
NETBIOS FRAMES 

- APPLICATIONS UTILIZING THE NOVELL NETBIOS 
IMPLEMENTATION GENERATE IPX 
ENCAPSULATED NETBIOS FRAMES 

- WHEN NETBIOS FOR TCP/IP IS INSTALLED, THE 
IBM NB30 INTERFACE GENERATES TCP/IP 
ENCAPSULATED NETBIOS ONLY 

- APPLICATIONS MUST GENERATE THE SAME 
TYPE OF NETBIOS FRAMES IN ORDER TO 
COMMUNICATE 

ISM LAN Systems 


Interoperability Outside Family 


- MAMED PIPES 

- LAN SERVER AND LAN MANAGER REMOTES NAMED PIPES USING 
SMBs ON NETBIOS 

- NETWARE REMOTES NAMED PIPES USING NCPs ON IPX 

- NAMED PIPES APPS RUNNING ON LAN SERVER CAN CONNECT 
TO NAMED PIPES APPS RUNNING ON LAN MANAGER 


Cl 9 A earn mnrr» a nnr* 

- mmivie:e*' rirco Mrro 


RUNNING ON LAN SERVER CANNOT 


CONNECT TO NAMED PIPES APPS RUNNING ON NETWARE 


- BOTH TYPES OF CLIENT SIDE NAMED PIPE SUPPORT CAN 


CO-EXIST ON A CLIENT VIA OS/2 IFS UNO POLLING 


IBM LAN Systems 


Interoperability Outside Family 

- NETBIOS PROGRAMMING INTERFACES 

- THERE ARE 2 NETBIOS PROGRAMMING INTERFACES: NB30 AND 
NETBIOS SUBMIT 

- NB30 IS THE ONLY NETBIOS INTERFACE INCLUDED IN NTS/2 

- WHEN LAN SERVER REQUESTER IS INSTALLED, BOTH NB30 AND 
NETBIOS SUBMIT ARE AVAILABLE 

- WHEN NETBIOS FOR TCP/IP IS INSTALLED WITH LAN SERVER, 
ONLY TCP/IP ENCAPSULATED NETBIOS IS AVAILABLE VIA NB30 

- WHEN NETWARE IS INSTALLED, NETBIOS SUBMIT GENERATES 
IPX ENCAPSULATED NETBIOS 

- WHEN NETWARE AND LS ARE INSTALLED, NETBIOS SUBMIT 
GENERATES EITHER NATIVE NETBIOS OR IPX ENCAPSULATED 
NETBIOS VIA THE VIRTUAL MULTIPLE ADAPTER SUPPORT IN THE 
LM10 NETBIOS INTERFACE 


IBM LAN Systems 



Interoperability Outside Family 

’VOUBLE HOT’ RESOLJRCE ACCESSING 



« LAN SERVER - LAN SERVER * ANY NOS 
CLIENTS »ANY NOS SERVER 

CLIENT 


IBM LAN Systems 


CO-EXISTENCE W/OTHER NOSs 

CONNECTIVITIES WITH OS/2 



AS/400 
WITH PC 
SUPPORT 


■ OS/2 IS THE PREMIER CLIENT CO-EXISTENCE PLATFORM 


IBM LAN Systems 


CO-EXISTENCE W/OTHER NOSs 

CO-EXISTENCE ON THE OS/2 CLIENT 

- LAN SERVER CLIENT CAN CO-EXIST 
WITH OTHER REMOTE FILE SYSTEM 
CLIENTS 

- NETWARE 

- PC SUPPORT 
-NFS 

- ETC. 


IBM LAN Systems 


CO-EXISTENCE W/OTHER NOSs 

NETWARE OS/2 CLIENT 



IBM LAN Systems 










































CO-EXISTENCE W/OTHER NOSs 

NETWARE 4M ON OS/2 

■ DISTRIBUTED SERVICES ARE SEPARATE 

- USER DEFINITIONS 

- DIRECTORY 

- ACCESS CONTROL 

« DATA THAT NEEDS TO BE SHARED WITH BOTH 
LAN SERVER AND NOVELL CLIENTS MUST BE 
KEPT ON THE NETWARE PARTITION 

- LOCAL ACCESS TO NETWARE DATA IS ONLY AVAILABLE 
THROUGH THE NETWARE REDIR 

- LAN SERVER MUST GO THROUGH THE NETWARE REDIR TO 
SHARE COMMON DATA 


IBM LAN Systems 









JIM Operating System/2 



LAD/2 Description 


■ Productivity Enhancer 


® Automated Installation & 
Migration 

- System Software 

- Applications Software 


BUM Operating System/2 

































''MWl Op e rating System/2 
















Installation Scenario 

■ 40 Clients ■ Token Ring 

OS/2 2.0 Extended 

Services 

LAN Server 

NTS/2 LAPS 


Operating System/2 

LAD/2 - Basic CID 
Comparison 

CID LAD/2 

■ Configure 90 min 25 

Parameters m j n 

■ Create 
SRVfFS IN! 

PH e 30 min Auto 

- Modify LCU 

Command File 45 min Auto 


I MMOperating System/2 



;iil Operating System/2 

















NetWare® 4.01 Server 
for OS/2® 

(LS 12) 


Christopher Cherry 
Systems Engineer 
IBM PSP, Boca Raton, FL 


NetWare History 


Version 


IMon-Dedlcated ? 


liiillllMi 


iilHjiili 



































Features - NetWare 4.01 


Features - Concurrent OS/2 


Provides features of NetWare 4.01 

- Directory Services 

- Memory Protection not supported 

- Uses NetWare file system 

- Runs NetWare 4.01 NLMs unmodified 

Accessible from all Clients 

- DOS, Windows, OS/2, Mac,Unix 


Preemptive Multitasking of OS/2 

- NetWare and OS/2 applications run 
concurrently 

OS/2 applications can share devices with 
NetWare 

- NSC and DC in current release 

- Disk volumes and CD-ROM In future 

OS/2 applications can use files stored on the 
NetWare server 


Features - Performance 

► Up to 90% of Native NetWare Performance 

- small overhead due to shared resources 

► Dynamically adjustable performance tuning 

- user-adjustable 

- controls amont of processor time given to 
NetWare 


System Structure 



OS 2 Device Drivers 


















VNETWARE.SYS 


PNETWARE.SYS 


OS/2 Virtual Device Driver (VDD) 

- Supports SERVER.EXE 

- Provides server interface to the machine 

► interrupt support 

► Memory support 

► Console management 
- Timer support 


OS/2 Physical Device Driver (FDD) 

- Communicates with and controls physical 
devices 

► Register/Unregister Interrupts 

► End of interrupt notification 

► Timer ticks 

► Memory allocation 


NWOS2.EXE 


Adapter Sharing - IPX Routing 


► 32-bit Ring 3 OS/2 Application 

- Protects OS/2 in the event of server failure 

- 4 threads of execution 

► Main thread (Server) 

► DOS fife I/O 

► Screen handling 

► Keyboard 


- Single adapter supports 
both NetWare client and 
server 

- Client can login to 
server in the same 
machine or on the 
external network 

- Supports same network 
topologies as NetWare: 

► Token Ring 

► Ethernet 
- ArcNet 










Adapter Sharing - Bridging 


NetWare client/server 
and OS/2 applications 
share a single adapter 

Provides source routing 

bridge from local client 

to external network 

Supports both CDS and 
NBIS based protocols 

Token Ring ONLY 



Printer Sharing 


NPRINTER.NLM 
modified to recognize 
OS/2 environment 

Uses OS/2 spooler API 

User/Supervisor 
manages NetWare print 
queue with existing 
tools 


NetWare 4.01 


♦ 

.... Spooler API 


OS/2 


l— \ 



- Hardware and device 
interaction is consistent 



with the OS/2 
architecture 


- OS/2 applications 
protected from server 
HLMs 




























Product Packaging 


installation 


- Packaged as an "add-on" 
for NetWare Version 401 

- Contains updated LAN 
device drivers and 
NPRINTER.NLM 

- Contains ail OS/2 support 
modules 

> MWOS2.EXE 

> VNETWARE.SYS 

> PNETWARE.SYS 
* BSKSHARE 

> LANSHARE/TOKENSHR 



> Determine overall system requirements 

- OS/2: 

* 4MB RAM (8MB or more recommended) 

► 30 Mb disk space (include space for swap file) 

- Disk space desired for applications 

► NetWare Client for OS/2 (4.5Mb DASD+2Mb RAM) 

- NetWare: 

► Use NetWare planning guide 

► 12Mb or more recommended 

► Disk space desired for network 

- Add OS/2 Requirements and NetWare Requirements 


installation 


Installation 



1) Install OS/2 
h Partition disks, leaving 
desired space for NetWare 
= if sharing a physical disk, 
NetWare partition must be 
defined as ’"free space” and 
remain unformatted 
® Follow normal OS/2 
installation procedure 



2) InstaSS NetWare for OS/2 
* uses same installation 
program as NetWare Client 
a Set NetWare HAM 
requirement In NET.CFG 
® install NetWare client with 
adapter sharing if only 1 
network adapter Is 
installed (optional) 









Installation 



3) install NetWare V4„01 
« Follow instructions for native 
NetWare V4.01 

■ Use OSKSHARE to share hard 
drive with OS/2 


- Use LAN SHARE to share NIC 
<* install program is OS/2 aware, 
will automate most of the 


procedure 


Utilities - NetWare Administrator 


- NWADMSN.EXE 

- View and Manage 
Distributed Directory 
Tree 

> Users 

o Servers/Volumes 

> Printers 

- Presentation Manager 
based 

> Drag and Drop 
operation 

= Provides same function 
as NetWare 3.11 
character based utilities 
- SYSCON 
» FILER 



Memory Model 


- NetWare Memory 
allocated at startup 

» Memory is Socked and 
not available to OS/2 or 
OS/2 applications 

- Memory must be 
contiguous 

- OS/2 limit of 512MB 

- Configured via NET..CFG 



0x0000 0000 


UTILITIES - NetWare Monitor 


- Presentation Manager 
based 

- View OS/2 and NetWare 
CPU utilization 

- Dynamically adjust the 
NetWare performance 
tuning parameter 

- Only true performance 
view 

- Since MONSTOR.NLM 
runs in multi-tasked 
process , it does not 
show accurate 
utilization numbers 



OS/2 CPU 
Utilization % 



NetWare CPU 
Utilization % 




















Direction - OS/2 SFS Support 


- OS/21FS mountable by 
NetWare 


NetWare 


- Data on HPFS, FAT, and 
GD-ROy partitions 
visible to NetWare 
clients 

- Share tape backup 
resources 

- IPG mechanism for 
NetWare NLNl's and 
OS/2 Applications 



Direction - Memory Sharing 


- Eliminate need for fixed, 
contiguous memory 
block 

- PNETWARE.SYS will 
remap randomly located 
OS/2 memory pages to 
appear to NetWare as 
one large, contiguous 
address space 



Allow remote installation 
of NetWare for OS/2 and 
OS/2 clients 

Response file driven 
(G/l/D) 

NetWare Server for OS/2 
can currently act as a 
O/l/D Code Server 


Code NetWare 

Server Client 



NetWare for OS/2 
Server 






























Summary 


► Single Hardware Platform 
for all LAM Applications 

- Full OS/2 Function 

- Full NetWare 401 
Function 

- Concurrent Use of OS/2 

- Preemptive Multitasking 
» Supports Multiple 

Concurrent LAN 
Protocols 

- High Performance 





LS13 



NetWare® Interoperability 
with 

OS/2® 2.x 

(LSI 3) 

Christopher Cherry 


Systems Engineer 
IBM PSP, Boca Raton, FL 


Products Involved 


► NetWare Client for OS/2 

► Banyan Vines Requester 
- TCP/IP Support for OS/2 

- NFS,X/Windows,DOS kits 
» IBM LAN Server 
*- IBM Communications 
Manager/2 

► IBM DB2/2with Remote 
Data Services 

► IBM Network Transport 
Services/2 

► AS/400 PC Support for OS/2 

► Lotus Notes 



OS/2 Client Connectivity Example 



. NETWARE CLIENT FOR OS/2 
. IBM TCP/IP FOR OS/2 
. OS/2 IBM LAN REQUESTER 
- OS/2 VINES REQUESTER 
o AS/400 PC SUPPORT FOR OS/2 
. LOTUS NOTES 


What WHS 1 Learn? 


A little history 
How does it work? 

Product interoperability 
Installing and configuring the 
products 

Things to watch out for 
Future directions 
Sources of information 
Acronyms 










Client Connectivity Model 



Who Uses What Protocol? 


IPX/SPX 

- NetWare, Lotus Notes, 
WinOS/2 

Vines IP 

- Banyan VINES 
TCP/IP 

- NFS,X/Win,RPC,Telnet,SMTP 
NetBIOS 

- LAN Server (802.2 for RPL) 

- Lotus Notes 

- DB2/2 
IEEE 802.2 

- Communications Manager/2 

- DB2/2 

- NTS/2 

- AS/400 PC Support 



Client Coexistence ’Hot Spots' 


Adapter sharing 

NetBIOS application support 

DOS application support 
(VDM/VMB) on OS/2 2.x 

CONFIG.SYS statement 
ordering 

Protocol Configuration 



IBM/Novell Relationship 


In February of 1991, 
NetWare from IBM 
announced. IBM will 
distribute, license, service 
and support Novell NetWare 
products (NetWare from 
IBM). 

► NetWare for RISC 
System/6000 (AIX) 

► NetWare for OS/2 

► NetWare server products 
- NetWare for SAA 



■■ 11*1 























































IBM/Banyan Relationship 


► IBM and Banyan work 
together to achieve client 
coexistence: 

- Banyan ships IBM 
developed NDIS support 
modules 

- OS/2 2.x Banyan VINES 
client support 

- Propagate OS/2 NDIS 
support 

- Available with VINES 5.50 
Release 



ISO Reference Mode! Interoperability 


ISO Reference Model 



► Novell Open Data-Link Interface (ODI) 

- Proprietary 

- Used by NetWare clients (DOS,OS/2) and servers 

► wide installed base 

- ODS layer handles ail bindings 

► uses NET.CFG 


► SBM/3COM Network Driver Interface Specification (NDIS) 

- Open 

- Used by IBM, Banyan, Microsoft, others 

► wide vendor support 

- Separate protocol manager 

► uses PROTOCOL.INI 

































MDiS Environment/Architecture 



■ PROTOCOL DRIVERS 
i MAC DRIVERS 
1 PROTOCOL MANAGER 
I NETBIND 


IBM LAM Server Client Structure 



IBM NTS/2 Client Structure 



IBM ES Client Structure 































































































































































































Banyan VINES Client Structure _ IBM TCP/IP Client Structure 












































































OS/2 Client 'MAC Layer' Option: 





ODI2NDI Client Structure 



► Recommended where NDIS Is the installed base 

► No performance degradation 

► Available with NTS/2 1 „x and LS 3.x 

► Presentation Manager configuration 

- No manual updates to CONFIG.SYS or 
PROTOCOL.INI 

► Run NWFIXUP if NTS/2 Installed before NetWare 
Client 

































































































ODINSUP Features 


MAC Interface Convergence 


► Recommended where ODI is the Installed base 

► Available with NetWare Client 

► 8-10% performance degradation for NDIS protocol 
stacks 

► Installation now automated 

e Doesn't work with IBM LAN Network Manager 
* Supports Packet Burst and Large Internet Packets 


► No convergence on ODI or NDIS for: 

- DOS 

- Windows 3.1 

- OS/2 1.x and OS/2 2.x 

► Windows NT, Windows 4.0 

- NDIS 3.0 

► OS/2 for Power PC 

- No decision yet, evaluating both options 


"Top 10" tips for OS/2 Clients 

► Remove pervious versions of NetWare 
Client before installing 

► Obtain latest CSDs 

► Add Ethernet 802.3 frame type to NetWare 
clients in NetWare 3.11-based networks 

► Make sure NDIS drivers are IBUS certified 
to work with OS/2 


"Top 10" tips for OS/2 Clients 

* Make sure you have PLENTY of memory if you 
want to install and use all of these client 
products! 

► Follow recommended installation order 

► Use ODI2NDI and NDIS MAC driver 

► LIB PATH statement correct for NetBIOS 
coexistence 




’Top 10" tips for OS/2 Clients 


Recommended Installation Order 


Manually unpack ROUTE.SYS in Token-Ring 
environment 

Avoid unnecessary changes to CONFIG.SYS 
- Let Instail/Config programs make the changes 


OS/2 2.x 

NetWare Client for OS/2 

LAN Adapter and Protocol Support 

- Create master LAPS disk with latest LAPS 
version and al! needed protocols 

IBM Network Products 

- LS Req., TCP/IP, NetView, etc... 

Banyan VINES Requester 
AS/400 PC Support for OS/2 
Lotus Notes 


OS/2 for Windows 


► Remove ALL networking support before 
installing OS/2 

► Follow recommended installation order 

Run DOS networking programs in VMBs for 
better compatibility 

► If Dual Boot used, make sure DOS client code 
not in OS/2 path 


NetBIOS Application Support 

► 2 NetBIOS APIs 

- NetBIOS 2.0 ("Submit" interface) 

- NetBIOS 3.0 (NB30) 

► NetBIOS does not specify a transport 

- must decide which transport(s) to use 
* may be bound to more than one 




NetBIOS Application Support 


NetBIOS Application Support 


NetBIOS 2.0 APS 

- Documented In IBM LS 2.0 API Reference 

- Shipped with LS 2.0, LS 3.0, MS LAN MAN, and 
Novell NetWare (emulator) 

- Implemented by NETAPI.DLL 

- Application layer only (no kernel interface avail) 

- Typically uses NetBEUI 

► Novell NetBIOS uses IPX 


IBM NetBIOS 3.0 Specification 

- Also known as 'NB30' 

- Typically uses NetBEUI/JetBEUl as transport 

- Documented In the IBM LAN Technical Reference 

- Shipped with ES 1.0, LS 2.0, LS 3.0, and NTS/2 

- Implemented by NETBIOS.OS2MCSNETB.DLL 
(Kernel Interface and Application layer Interface) 

- Faster and easier to code than NetBIOS 2.0 

- Used primarily by IBM NetBIOS applications and 
Lotus Notes 


Choosing NetBIOS 

Which NetBIOS/transport to choose? 

- NetBIOS 2.0 over IPX 

► NetWare-only environment 

► No need for Virtual DOS support 

► Use NetWare OS/2 Client NetBIOS 

_ NetBIOS 3.0 over NetBEUI/JetBEUl 

► NetBEUI-based environment 

► N© routers installed, or IBM 8611 MPR 


Choosing NetBIOS 

► Which NetBIOS/transport to choose? 

- NetBIOS 3.0 over IPX 

► NetWare environment 

► IBM NetBIOS applications 

► Need Virtual NetBIOS support 

► Routers installed 

_ NetBIOS 3.0 over both IPX and NetBEUI 

► mixed IBM/Novell environment 

► Typically only used on a server 








NetBIOS 3,0 over IPX 


TCP/IP NetBIOS 




Novell NetBIOS 




Work ©n Future Interoperability? 

► Novell 

- LOGIN/LOGON 

- Systems Management 

- Integration of NetWare tools into WPS 

- Virtual NetBIOS Support 

► IBM Products 

- LAN Server over TCP/IP performance 

- LAPS Packaging 

- Peer-to-Peer 











































































NTS/2 LAPS Configuration Guido 
(S96F-8489-00) 

IBM LS 3.0 NetWare Coexistence (S96F-8311-00) 
IBM LS 3.0 API Reference (S96F-8440-00) 
NetWare Requester for OS/2 2.0 Users Guide 
(GG24-3891 -00) 

Vines Users Guide for OS/2 2.0 


Electronic Support Forums 

► CompuServe Information Service 

- OS2SUPPORT 

► ES/LS Support 

► Application support 

- OS2DF2 

► For developers only 

► LS,TCP/IP,C/i/D, NTS/2 API support 

- NOVOS2 

► NetWare Client 

► NetWare for OS/2 


Product level Publications 


► TCP/IP for OS/2: LAPS Introduction and Config 
Guide (SCSI-7026-00) 

► TCP/IP for OS/2: Installation and maintenance 
(SC31-6075-03) 

► IBM LAN Technical Reference (SC30-3383-03) 

► IBM ES for OS/2 LAPS Config Guide 
(S046-1113-00) 

► AS/400 PC Support OS/2 Install and Admin 
Guide (SC41-0007-01) 


Electronic Support Forums 

► IBM Bulletin Board 

- IBM Personal Systems 
(919) 577-0001 

- IBM National Service Center 
(404) 835-6600 

► IBM FTP Server 

- software.watson.ibm.com 









Other Sources of Information 


Other Sources of Information 


► ITSC 'Redbooks' 

- (GG243891) OS/2 NetWare Requester 

- (GG243893) NetWare on TCP/SP 

► IBM NDIS Driver Implementation Package 

Contact: dwb Associates, Inc. 

9360 SW Gemini Drive 
Beaverton, OR @7005-7109 
U.S.A 

(503) 626-3081 
(503) 641-6012 - FAX 


► IBM OS/2 Developers Magazine 

- LAN Interoperability with OS/2 2.0 (Winter 1993) 

IBM OS/2 Developer 
PO Box 1079 
Skokie, IL 60076-9722 

- Personal Systems Magazine 

- IBM and Novell LAN Software Coexistence (Apr 92) 

IBM Personal Systems Technical Solutions 
c/o The TDA Group 
Box 1360 

Los Altos, CA 94023-1360 


Other Sources of Information 


► OS/2 Developer's Connection 

- Quarterly GD-ROM(s) full of tools and documentation 

- Private CompuServe forum 

- To order the Developer Connection for OS/2 or additional licenses, please 
call the appropriate number: 

United States: 1-800-6DEVCON (1-800-633-8266) 

Canada: 1-800-561-5293 

Brazil: 0800-111205 

Mexico: 91-800-00639 (within the country) 

627-2444 (within Mexico City) 

> The following require your country's international access code prior to 
the listed number: 

Asia/Pacific: 61-2-354-7684 (You will be calling IBM Australia; 61 is 

the country code.) 

Europe, Middle East, Africa, and Latin America (You will be calling IBM 
Denmark; 45 is the country code.) Operators speaking the following 
languages are available: 

Dutch 45-48101400 German 45-48101300 

English 45-48101500 Italian 45-48101600 

French 45-48101200 Spanish 45-48101100 


Acronyms 


► CCB - Command Control Block 

► DLR - DOS LAN Requester 

► IEEE 802.2 - Logical Link Control defined by IEEE 

► IFS - Installable File System 
»- IP - Internet Protocol 

► IPX - Internet Packet Exchange 

► ITSC - International Technical Support Center 

► JetBeui - NetBIOS Protocol stack (newer - faster) 

► NetBeui - NetBIOS Protocol stach (old version) 

► LANDD - IEEE 802.2 Protocol Stack 

► LAPS - LAN Adapter and Protocol Support 

► LSL - Link Support Layer 

► MAC - Media Access Control 



Acronyms 


e» MLI - Multiple Link interface 

► MLID - Multiple Link interface Driver 

► MPI - Multiple Protocol interface 

► NDSS-Network Driver Interface Specification 

► NFS - Network File System 

► ODI - Open Data-Link Interface 

*■ POPS - Performance Optimized Protocol Stack (Same as 
LANDD and IEEE 802.2) 

► RDR - LAN Server file Redirecter 

► RPC - Remote Procedure Call 
» RPL - Remote Program Load 

► TCP - Transmission Control Protocol 

► UDP - User Datagram Protocol 




LS14 


Agenda 


Multiprotocol Transport Services 


Don Woods, BBM Austin, TX 



Worldwide Changes Driving Networking 


Intra-enterprise DIVERSITY 



« Today's Environment and Requirements 

@ Multiprotocol Transport Networking Overview 

s MPTN Benefits 

• MPTS - AnyNet for OS/2 

. ■: . — IBM LAN Systems mp*p2 

Today 's Environment: Multiple Protocols 

Problems: 

• Application bound to 
Protocols 

• Multiple active protocols 

9 Extra memory and 
processor costs 

® Complex code 
management tasks 



IBM LAN Systems 


mm LAN Systems 


wpbp4 













Customer Requirements 



• Choose applications 
independent of transport 
network 


• Simplify the network 

• Extend the reach of 
applications across 
multiple networks 






Protect investment of 
existing applications and 
hardware 


IBM LAN Systems 


mptipS 


Common Transport Semantics (CIS) 








































CTS Examples 


Mixed Protocol Examples 



IBM LAN Systems mpup) 


BIBB 

SNA 

OSS 

TCP/IP 

NetBIOS 

IPX 

DECnet 

SNA 

m 

Sf.ssfc 

i ^SSeSftT 




OSI 


m \ 




TCP/8P 

'v 3 


S 




NetBIOS 




|m 



IPX 





n 


DECNet 






pi 

WWW 


lip products same protocol 


IBM LAN Systems 


Multiprotocol Transport Networking 



© Applications and APIs 
independent of transport 

© Transport user partners 
must match 

® Connection and 
connectionless mode 
transport services 

® One or more transports 
below Common Transport 
Semantics 

@ Ability to add protocols 
above or below 


Building Multiprotocol Networks 


« Address Mapping 


e Function Compensation 


« Transport Gateways 


® Network Management 


IBM LAN Systems 


mptspn 


mm LAN Systems 










































































































Address Mapping 


MPTN Access Node MPTN Access Node 


jMBli 




§S 

■ ■ 


iff 

■ 

Wfm m 

j ] 




■■ Bh 



• Three architected approaches: 

- algorithmic 

- extended native directory 

- address mapper 

- i .. ; mu LAN Systems n**p>3 


Common Transport Semantics 





CIS includes: 

® Native flows for matched user and provider protocols 

® iMIPTN function compensation and address mappings 
for unmatched user and provider protocols 

9 Function delivered by industry standards such as 
RFC 1001/1002 for NetBIOS over TCP 

" = ■■■ == IBM LAN Systems rrpupu 


Transport Functional Compensations MPTN Transport Gateway 


Transport User Services 

User 

Expedited 

Iff Multicast Data RecordsStream... 

3) 

2 osi 
> 
o 

& TCP 


o 

g-NetBSOS 

ffl 

c 

m 

H SNA 


j§§ 

■ 

■ 


i 

M 

§(§ 

1 

■ 

;f- s 

■ 


SI 

1 

■ 

mi 


M function Sacking, 

^ needs compensation 


@ Every transport provider 
lacks functions supported by 
other transport providers 

® Compensations are common 
solution for multiple 
protocols’ missing function 

© Compensations are minimal 

© Compensations required only 
when transport user requests 
services not provided by 
transport provider 


ypiN 

Access rsode 



• Provides MPTN services for native protocol 

« Interconnects two networks with different 
transport protocols 


ISM LAN Systems 




mm LAN Systems 








































Multiple MPTN Gateways 



OS/2 Product Implementations 



» TCP/SP Sockets over 

- SNA 

- NetBIOS 

e APPC ovsr TCP/SP 

• NetBIOS over TCP/SP 

- (RFC1001,1002) 


ISM LAN Systems mptspie 


MPTN Benefits 



im LAN Systems 

















































• LEVEL I (Protocol Independent Set - so32dILd!l) 



- CONNECTION SETUP 

* listen, accept, connect 

~ DATA TRANSFER 

* sendto, recvfrom 

* send, recv, sendmsg, reevmsg, readv, writev 

- GENERAL SERVICES 

* ioctl, select, getsockname, getpeername, get/setsockopt 

a LEVEL IS (TCP/SP Protocol Dependent Set - tcp32dll.dll) 

* set/gethostbyname, inet_addr, htons,.... 

- ====^=== -- mM 

LAN Systems wpt v n 


Communicating with NetBIOS NCB Appis. 



Sockets "C" Programming Example 



InstaBSatgons/Configurations 

• MPTS Installation/Status 

- CID Enablement 

- mpts, mpfstart 

- mptstat, trace on/off 

# NetBIOS Protocol Configurations 

- (same as NTS/2 1.0) 

© TCP/IP Protocol Configurations 

- ifconfig, route, arp, ping, netstaf 

® TCP/IP over NetBIOS Configurations 

- Name services (mptpaddr, mptuaddr, mptpSst) 


IBM LAN Systems n^ze 















OS/2 MPTS - AnyNet Product Strategy 


OS/2 MPTS -AnyNet Product Strategy— 


• Integrated Transport Services to Network Enable OS/2 

- Protocol Stacks / MAC Drivers Enablement 

- MPTN/CTS Enablement 

• OEM Product Packaging for Early Availability 
© Single 32 bit Transport APS 

- Industry Standard 

- Protocol Independence 

« Coexistence with Current 16 Bit OS/2 Transport API’s 

- NetBIOS NCB, 16 bit Sockets, APPC/CPI-C,.... 

B SB ran LAN Systems <***>21 


• Multi-Protocols Support 

- Single Protocol for Client WS 

- Multi-Protocols for Server WS 

- NetBIOS for Small/Medium LAN Installations 

- TCP/IP, SNA for Medium/Large LAN/WAN 
Installations 

- NetBIOS, TCP/IP and SNA Network Interoperability 

DM LAN Systems mptip21* 


Function MPTS Structure 

* Includes ALL NTS/2 1.0 LAPS Services 

# 32 bit Sockets Library 

- Enhanced Protocol independent Services 

* Connection-Oriented Data Transfer 

* Connection-Less Data Transfer 

- TCP/IP Protocol Dependent Services 
ft Protocol Support 

- Local IPC 

- TCP/IP 

- NetBIOS 



- TCP/IP over NetBIOS (NonNative) 

# Installation/ Configuration Services 


ISM LAN Systems 




mm LAN Systems 























MPTS - AnyNet for OS/2 Benefits 


MPTS - Any Net for OS/2 Future Direction 


« TCP/IP Applications RUN on NetBIOS LAN 
Unchanged 

o NetBIOS LAN Performance 

® Single Transport Protocol for Clients 

© Multiple Concurrent Transport Protocols for 
Servers 

IBM LAN Systems 0^27 


• Other Protocols Support 
® MPTN Gateways 

• OS/2 AnyNet / MPTF Coexistence 

© IBM Microkernel / Workplace Products Support 

= l . ^- IBM LAN Systems mpisp» 


Publications 


Trademarks 


® MPTS Product Publications 

- IBM MPTS - AnyNet for OS/2 Programmer’s Reference 

- IBM MPTS - AnyNet for OS/2 Configuration Guide 

- IBM MPTS - AnyNet for OS/2 Message and Problem 
Determination Guide 

• Architecture and OS/2 Related Product Publications 

- GC32=7057 Networking Blueprint: Executive Overview 

- GC31-7Q72 MPTN Pocket Guide 

- GC32-7073 MPTN Technical Overview 

- SC31 =6487=0: Sockets over SNA User’s Guide 

- SC31 =6488=0: APPC over TCP/IP User’s Guide 


The following are trademarks or registered trademarks of the IBM Corporation: 
IBM, AIX, CICS/ESA, CICS OS/2, DB2, DISTRIBUTED DATABASE CONNECTION 
SERVICES/2, DRDA, IMS/ESA, MVS/ESA, NetBIOS, NetVIew, OS/2, OS/400, 
PROFS, and VTAM. 


The following are trademarks or registered trademarks of their respective companies: 
Appletalk Apple Computer Company 

DECnet Digital Equipment Corporation 

NFS, Sun Sun Microsystems, Inc. 

UNIX, IPX Novell 

X Window System Massachusetts Institute of Technology 


Other products mentioned herein might also be trademarked by their respective companies. 

The announcement and availability of referenced functions Is within IBM’s business and 
technical Judgement. 


IBM LAN Systems 


mm LAN Systems 











LS15 


ADSTAR 

DISTRIBUTED STORAGE 
MANAGER 



Leader in Storage Management 


BACKUP & ARCHIVE PROCESS 



v Allow different type* of data 
to be treated differently 


TRADEMARKS 

Owner Trademark 

IBM ADSTAR, AIX, A1X/6000, DB2/2, DB2/6000, 

OS/400, OS72, 

MVS/ESA VM/ESA 


Novell 

X/Open Co, LTD 

Cray 

Apple 

Microsoft 

Sun 

FTP Software 
Attachmate 
Hewlett-Packard 
Borland 

The ASK Group, INC. 
Digital Ecfuipment Corp. 
Santa Cruz Operations 


Novell, NetWare 

UNIX 

Uni cos 

Apple Sssantosi*., mac;Ct- 
ftSicrosoft, Windows, FOXPRO 
SunOS, Solaris, Open Windows 
PC/TCP 

Attachmate, Extra! 

Hewlett-Packard 

PARADOX, dBase 

INGRES 

DEC ULTR1X 

SCO, Open Desktop 


BACKUP & ARCHIVE PROCESS 

(2) Within this policy domain exist ’'rules" 
for backing up & archiving data 



s/ Cu*tomlze ''rule*"' to meet your data projection need* 
v 7 Standard MC —> 'Up and running" 




































BACKUP & ARCHIVE PROCESS 



/ How oftc-n? 

/ Start time window? 


/ Randomization 

y Priority? 


BACKUP & ARCHIVE PROCESS 


(5B) ADSL’s 


tracks a variety of information, 
such as ciient's data 




Mirrored Copies 


y 2 phase commit 

y Mirroring: automatic aitornatc-voiu me-switching 
v Dynamically expand & contract 
y Database- dump, load, audit 


® Clients' data goes through 
a filtering process 



Clients' data Is backed up or archived 
as specified by the "rules" 


Backed up or archived data 
can be compressed 






($) Backup and archive data is protected and stored in 
existing on ADSfW’s server 



v Migration 

y Wide range- of storage- mc-dia 
y 'Unlimited' 1 storage- pooi ic-vc-i* 

*/ Dynamic storage- reconfiguration 



































BACKUP & ARCHIVE PROCESS 


(6) Backup and archive data is protected and stored in 
existing on ADSM's server 



Migration 

\/ Wido r-ingo of siorago modi a 
•/ ‘'Uniimitod'' oforago pool iovolo 
V Dynamic storage* reconfiguration 



ize tape rnour.to or. restore 


LAN ADMINISTRATOR CONTROL? 


Engineering 



'Revenue loss 1 2 due to network and system outages 
averaged $3.8 million luk year per company." 

Computorworid 

2/7/94 

1 According to a sunrey of ICS managers responsible foe LAN &Jctr 
computer systems by bifonetics, Inc. 

(SJ, California research firm) 

2 This comperes with $650,000 per company in a 1989 study 















ADSTAJR DISTRIBUTED STORAGE MANAGER 
CLIENT/SERVER APPLICATION 



Simple Put Powerful Inter face for the 
End User 










































































t/lDM A1X/60OO 
V'IDM OS/2 
/(DM OS/400 
'/ (DM MVS 
•/ EDM VM 


'/Apple Macintosh 
V'DOS 

'/ [DM AfX/6000 
*/ Microsoft Windows 
yscouNixses 


V Novell NetWare 
*/SCO Open Desktop 


S'* Sun Microsystems SunOS;Sofaris 


y Availability Management 
*/ Storage Management 



/ [DM AiX/6000 
/(DM OS/2 
/[DM M VS 
‘/[DM VM 




’/ Borland dDASD for E*OS 
S'* Dor land PAFiADOX for DOS 
/ Borland PARADOX for Windows 
/ [DM D52/2 
*/ 1DM DD2/6000 


'/ Apple Madnt osh */D DC ULTm(X 

/DOS V HP HP-UX 

/[DM AIX/6000 S^iDM -OS/2 

V Microsoft Windows /Novell NetWare 

V SCO UNIX 366 /SCO Open Desktop 

/Sun Microsystems SunOS/Safaris 


y Informix online for AiX/6000 
/(NODES Intelligent Eetabase for A1XS500 
y' Oracle for [DM PS/6000" 

/Microsoft ACCDSS for Windows 
/Microsoft FOXPDO and for Windows 
V Sybase" 


V'Availability Management 
'/storage Management 


V [DM DD2/8000 




partttk 










































/ Sysio-m as&isted 
•/Crow pi«tfc»rm 


v Bo-stl nation sc-taciion 
/Sovuriiy: rc-gteir-sttcn airthoriiailon 


“ Within one year following the San Francisco 
earthquake ofI989 y 93% of the businesses that 
lost the use of their data for 10 days or more, 
filed for bankruptcy . Half of those filed 

immediately ." 


Source: MicroWorid - April 1891 






















































































ADSTAR DISTRIBUTED STORAGE MANAGER 



IBM 

MVS or V6S 
ADSM 
SERVER 


Storage .Devices fva;s>or*c** 'ey *He JVIVS or VJW ADSM Server 







fciii 


• PWSCS la aupportedony on a VM aerver 

@ a^hrlBMQ 5 p.10>4(Wr^««r^d) 



ADSTAR DISTRIBUTED STORAGE MANAGER/6000 
_(ADSM/6000) 


ADSTAR DISTRIBUTED STORAGE MANAGER 
API __ 



as an ADSM client node 


/ ADSM API available on: 

HP HP-UX 
IBM AiX/6000 
IBM OS/2 

Microsoft Windows 

Sun Microsystems SunOS/Soiaris 





























BACKUP & ARCHIVE PROCESS 




jgg|5apg|g| Z Dorfand dD AS D for DOS 

Z Dorfand PARADOX for DOS 

V Dorfand PARADOX for Windows 
Vi DM DD2/2 

A DM DD2/6000 

V^IKGmSS frjteffigent Database for AfX/8500 
‘/Oracfe for [DM **3/8000" 

V Microsoft ACCDSS for Windows 

V Microsoft FOXPRO for Windows 



APSTAR DISTRIBUTED STORAGE MANAGER 















































adstar distributed storage manager 



adstar distributed storage manager 


































































ABSTAR DISTRIBUTED STORAGE MANAGER/400 
(APSM/400)_ 


















LSI 


' media management with 
tern LAN Network manager: 
tor OS/2 


. Nathan C„ Bullock . |||| 
: Advisory- P’rogfadtmof.'||| 
IBM Corporation 
Research Triangle Park, NC 

HI COURSE; LS16 • 


V '. FEATpRES & FUNCTIONS ' ■:. 

^ coMpi^oi^;' 

~ eEACONIRG&SGFT ERRORS 

' -lah performance' -'il®iill 

- CRITICAL RESOURCES iRBIill 

► MANAGE SQTHMEDIA AND DEVICES ' -' 

.> AdTOMAIIcNEi^h^T^lliileY . 

DISCOVERY - , ■- :V; 

: : UJ^; : ^ 0 : ;^ 4 |CS#P';y^i«,'#k|lieRIERS ; f ■ v l" : 

► FULL FUNCTION COMPAND LIRE t/F 
.►;-D¥NAMlC EVENT tOG-STORiS;ANiil 5 i#E® 
■i- ;-ALL RELEVANT. 

'•* imMm and automatic adapter iiiiiii! 
; removal 


MEDIA MANAGEMENT vA 
■ . Bt>t PANABEMENf 


► MANAGES TREtAN'TOTHE ADAPT 
k AUTOMATIC -DISCOVER OF ACTUAL 7 Jill' 
TOPOLOGY'.' :. \ . • lipf::.: tl 

I ROT RESTRICTED TO HUB .ATTACHMENT IN . : ' 
ORDER TO REMOVE AN ADAPTER 

* NOT RESTRICTED TO HUB ATTACHMENT IN 
ORDER TO DETECT FAILING ADAPTER 

'* NETWORK MANAGEMENT JSVERT" FASt AND 
EFFICIENT (ITS BUILT-IN TO THE ADAPTER 
■ DRIVERS) ISIIIM; 

* INTERUPT DRIVER VS POLL-BASED 

It EXPLOITS INFORMATION ALREADY STORED 
1 ;aT:BRIDGE'AND : RC lJTfeR.;FOR TOPOLOGY , 


LAN NETWORK MANAGER FOR OS /2 
: STANDARD PRODUCT SUPPORT 


p- REQUIRES: 

-OS /2 2 . 1 + 

■ - LAN ADAPTER & PROTOCOL'.SUPPORT,. ;,I 
' .{UPS) . 

*t SUPPORTS: ;. 

■ :; ;Los /2 

-TCP/IP FOR OS/2 
~ INSTALL/2 

i VGA, XGA, 8514 A, IMAGE/A- v\ • 

II THE IBM THINKPAD) .IIiilfia;S^^; 

► DOES NOT iEiUtREA'DEDiCiibrED^STEM;. 







FOR OS/2: 

r?i ; E::liiiF!^EN06R,S0PPdRT III 


y lnm now ”0? fics all? m su pro rts non-ibm 

illT^ORKjNO DEVICES «ll®lllllliyB 
* IBM ENDORSED LNM COMPATABILITY 
CERTIFICATION PROGRAM 
llN'TERO PER ABILITY TESTING' AND • 

m tolly/ 

I GROUP (INDEPENDENT TEST LAB) 
'►.CERTIFIED PRODUCTS ARE AUTHORIZED TO 
BEAR THE "LNM COMPATABIE” LOCO 
► LNM CUSTOMER SERVICE SUPPORT FOR 
CERTIFIED PRODUCTS IS PERFORMED BY 
THE TOLLY GROUP 


LAN NETWORK MANAGER FOR OS/2 
■ DISTRIBUTED MANAGEMENT lllli 

A PR<|&¥ AOiilT FOR LAN MANAGEMENT TO 
NETVIEW -//i BtB;® 

l|L :: :GiN : iRATiSaii : DSMiHTS TO NETVIEW Y 
' w SET :ALERT : FILTlRS'''.'• • 

: - FULL SUITE OF CQM8/^NDS FiDMETVIEW 
MUP^RitW ■' I 

rngmi)'./ 

►,PROXY AGENT FOR LAN MANAGEMENT TO 111 
NETVIEW/6000 . 

BGiNERATES/SENOSTRAPS TO :llillll!ll 
' • NETVIEW/6000 •lllilll 
-FULL SUITE OFCOMMANDS FROM . 1 
NETVIEW/6000 


LAN NETWORK manager 1 'FORosi.: 
11 :I^||ribut!ed.M^a^^snT; ; /' 



LAN NETWORK MANAGER FOR OS/2 
/'^GRAPHICALUiERTNTERFAii/li 


//►/FULL GRAPHICAL TOPOLOGY - 

► AUTOMATICALLY DISPLAYS CURRENT 
NETWORK STATUS 

► SWITCHABLE EUI 

.;^INTUITIVE PANEL NAVIGATION . 

;;ANAVlGATE ACi§iii;V|EV^ L ll 

► FLEXIBILITY WITH SETABLE EUI OPTIONS 

- FONTS 11/1 f y[ ; : 1 j : ^2222 2 ' 2 'Bill 

I. - sorts : iii«!i!a 

-SHOW 

!► DYNAMICALLY DISPLAYS .RING, UTILlEAffoil^ 











lM;NETWGRK MANAGER' FOR OS/ 2-1 
TOPOLOGY' lllll 


liliiifiEl® 

v> network ■: iliiiill 

- SEGMENT. ' • ■ 'JlHIllillllllli 

I ~DEVICE -vV' 

* DISPLAY BOTH LAMS AND WANSAt 
NETWORK LEVEL VIEW 

► AUTOMATIC OR:'USEB':DSP$|iB TOPOLOGY 
LAYOUTS ;":.•?•-•••• 

* USER DEIFINED GRAPHICAL BACKDROPS . : 

* DEVICE STATUS AUTOMATICALLY. SHOWN | 
WITH COLOR CHANGES 

► STATUS IS AGREGATED UPWARD THROUGH: 
VIEW 'LEVELS ' 


LAN NETWORK MANAGER FOR OS /2 
HUE MANAGEMENT V 


2 FULL DEVICE-LEVEL. VIEWS 
.fe:AUTOMATl€ALLY::OiSPLAY. PORT STATUS 
^MANUALLY OR AUTOMATICALLY ENABLE St 

l -jd®sa!ya^£'Nai?nra^ : ' 

& INITIATE HUB MICROCODE LOAD 

liifeiiiiT® #: ■ 

ItIiMnDALL^ TO' ■ 


LAN NETWORK MANAGER 'EOROS /2 
BRIDGE/ROUTER M ANAGEMENTV' 


*;managstw&pqrt multiport; BRIDGES- / 

► AUTOMATICALLY LINK BRIDGES.; 

II GET & SET BRIDGE PARAMETERS 
BRETRIEVE'PEREORliiANClCOUNTgRiiiiM^: 
BRIDGES 

^•JNSTiWjL -V 

^LEXiBLITY IN DEFINING A MANAGED DOMAIN; 

I • - MULTSiM : LNM^S^N L iANAii;|RE:iAMi' ; ; 

BRIDGE 

~ ABLE TO SET UNIQUE PASSWORD/BRIDGE 

II ONLY MINIMUM DEFSNIIlON-RlOUIRlD TQ>R:• 
ESTABLISH MANAGEMENT LINKS' 


LAN NETWORK MANAGiRfOROS/ 2 : 
•• ACCESSCONTRQL T 


► AUTOMATICALLY CONTROLS ACCESS TO THE 

lan ■■■ >;• 

2 GENERATES ALERT FOR ILLEGAL ACCESS'/••' 

attempt 

'I'OPERATORDEBNESI^iilii-fiR'COiTROL;:?:: 

I UNAUTHORIZED Wpilf!i|!l||:£;; 

• - UNDEFINED 

■ - ADAPTER-MOViD t FROmIPrIIR: LOCAilOil-il 












LAN NETWORK MANAGER FOR OS/2 
Mlt : PROpy.GTiNSTALLATiON III 


IN»LL10L:USINO IBM'S T 
'Tnstall/2 FOR os/2" product 
^; i|LEOTI¥iL¥ INSTALL COMPONENTS . 

► SELECTIVELY DEINSTALL COMPONENTS 

► FULLY C/I/D ENABLED FOR REMOTE INSTALL: 


LAN NETWORK MANAOER FOR OS/2 
■ .PRODUCT OOCUMiiTATlON-: -T 


1 FULL SET OF HAiDCOPY MANyALS T C : ^ 

► ONLINE MANUALS FOR OsM^VlEW 0 ; 

► ONLINE MANUALS FOR "BookManager” FOR 

' - •!§> 

► ONLINE MANUALS FOR "UbraryReader/2 M 


LAN NETWORK MANAGER FOR OS/2: 
PRODUCT PACKAGING/OFFERINGS 


► ALL NEW TIER PAQKAQINQ/PRICINQ 
All tiers have the same funtlonality, but 
different management domain capacities. 

~ TIER 1 k MANAGE 1-2 SEGMENTS • I 

j/^T|ER:r«:MMMifl4ifeMENfS : /•, 
TIER 3 ~ MANAGE 1-2S6 SEGMENTS 










MM01 


Multimedia Presentation Manager/2 


08/04/94 


OS/2 2.1 Multimedia Support 



Maria R. Ingold 
ingoldm@vnet.ibm.com 
Multimedia Development 
IBM Boca Raton 


What is Multimedia? 


► The Creative Use of: ► Interaction 

> Graphics 

> Imaging 
Audio 

> Video 

> Animation 

> 'Non-Traditional 1 Devices 


Why OS/2 for Multimedia? 

► Performance 

- Preemptive multitasking 

- Multi-threaded 

- 32 bit addressing 

► Memory and process protection 

► Workplace Shell User Interface 

- Object manipulation 


Multimedia Presentation Manager/2 Overview 
















Multimedia Presentation Manager/2 


System Sounds _ System Sounds 


13 System Events 

a Alarm Clock 

« CUCKOO.WAV 

26 .WAV files 

* Begin Brag 

- POP.WAV 

Add new .WAV files easily 

« Closing Window 

- EEEOOOP.WAV 

Easy Association 

» End Brag 

■ DOINK.WAV 

System Sounds Volume Control 

® Error 

■ BELLS.WAV 

■ Information 

- DRUMROLL.WAV 


« Lockup 

» DOORCLS.WAV 


* Opening Window 

• WOOEEP.WAV 


» Printer Error 

» BELLS.WAV 


® Shred 

- SHRED.WAV 


■ System Shutdown 

• APPLAUSE.WAV 


■ System Startup 

• CHARGE.WAV 


■ Warning 

- TWIP.WAV 


Media Control interface 

► 32-bit device independent programming layer 

- 32 bit procedural interface 

- 16 bit support THUNK 

- string interface 

** Extremely low cost t© enable applications 


Media Control interface 

► Multimedia logical devices 

- existing devices can be extended 

- new devices can be added 



Waveform Audio 



CD Audio 



MIDI Sequencer 



Amplifier Mixer 



CD-ROM/XA 



Videodisc 



Digital Video 


08/04/94 


2 




Multimedia Presentation Manager/2 


Media Control Interface 


MCI Basic Functions 



► mciMakeGroup 

► mciSendCommand 

► mciSendString 

► mciSetSysVaiue 




a DUiiOS a group ui mt?uiei utsviu«& 

■ Sends a command to a device 

■ Sets system wide values (e.g. 
Closed Caption flag) 


MCI Basic Messages 


Media Control Interface 

__ 


► MCLOPEN 

► MCLCLOSE 

► MCLACQUIREDEVrCE 

► MCLLOAD \ 

► MCLPLAY \ ■ Opens a device 

► MCLSEEK \ ■ closes a device 

\ ■ Request exclusive use 

■ Specifies a file or RIFF chunk 
for a device 

« Causes device to begin playing 
« Changes current media position 



08/04/94 


























Multimedia Presentation Manager/2 


Data Streaming and 
Synchronization 

■ Synchronization and Streaming 
Manager (SSM) 

- central management of resources 

- buffers / synchronization data 

- reliable data transport 

- extendable 

■ Synchronization 

- cue-points, position advises 

- inter-device synchronization 



OS/2’s Software Motion Vide© 


Ulti motion™ 
and Indeo™ 
Formats 



Uitimotion and OS/2 Digital Video 


► Uitimotion 

- SMV Data stream 
definition 

- CODEC (compressor/ 
decompressor) 


► OS/2 2.1 Digital Video 

- Player software 

- Pluggable CODECs 

> Uitimotion ™ 

► indeo ™ 

» Others 


Uitimotion Video Playback 

Software motion video playback algorithm 
*> 25 MHz 386 or above 

- Audio card (optional) 

Nominal Video Clip 

- 320 x 240 x 15 FPS @ 64K colors 


08/04/94 


4 

























Multimedia Presentation Manager/2 


_ Sound Card Support 

► Sound Blaster 

► Sound Blaster Pro 

► Sound Blaster 16 ASP 
- Creative Labs 

► Pro Audio Spectrum - Media Vision 

► PORT.ABLE Sound Plus - DSP Solutions 

► M-ACPA - IBM 

► Plug-N-Play - Arkay Technologies 



For More Information - Books 


For More Information - Articles 


► Books 


- S71G-2220: 

- S71G-2221: 

- S71G-2222: 

- S71G-2223: 

- S41G-2921: 

- 82F4224: 


The OS/2 Multimedia Advantage 
Application Programming Guide 
Programming Reference 
Subsystem Development Guide 
Sample Programs Workbook 
Ultimedia Video IN User's Guide 


► Red Books (with sample diskettes) 

- GG24-4042: MMPM/2 Advanced Programming 
Techniques 

- GG24-3963: MMPM/2 Programming Using 
Digital Audio Examples 


► Digital video architecture for OS/2 2.1 

- High-Speed Networking and Multimedia 
Computing ISBN: 0-8194-1483-2 

► inside OS/2 Software Motion Video 

- Dr. Dobb's Multimedia Sourcebook, #209 

► OS/2 2.1 Multimedia: From Sn-the-Box toVIde© In 

- Personal Software Technical Newsletter, # 2 

► OS/2 2.1 Multimedia 

- OS/2 Monthly, Issue 10 


08/04/94 


5 




What is OS/2 2.1 Multimedia? 


OS/2 2.1 Multimedia 
MMPM/2 Applications 
and Architecture 



Maria R. Ingold 
ingoldm@vnet.ibm.com 
Multimedia Development 
IBM Boca Raton 


► Multimedia Presentation Manager 12 

► Set of audio and video applets 

- Immediate functionality 

- Exemplify use of MMPM/2 architecture 

► MMPM/2 Application Programming Interface 

_ EZaeilu AvtoneiKta 


MMPM/2 Applets - Those two diskettes 


Video IN 


► Audio 

- Digital Audio Player/Recorder/Editor 

- CD Player 

- MIDI Player 

- Volume Control 

- Sytem Sounds 

- Lotus/Excel Macros 

► Video Playback 

- Uitimotion 

- Indeo 2.1, 3.1 

► Multimedia Data Converter 


► Video IN Recorder 

- Records Uitimotion, Indeo 2.1 

- Bitmap capture 

- Cut, copy, paste editing 

► AVI File Utility 

- Browse header, chunk, index, and status 

- Interleave 

- Split 

- Merge 
-Skew 

- Animation 









MMPM/2 Toolkit 


► Header files, libraries 

► On-line references 

► Working sample applets 

- Demonstrate every major MMPM/2 function 

- Can be used freely 

- Immediate productivity 


The MMPM/2 Architecture 

► Media Control Interface (MCI) 

- Device independent 

► Synch ronization/Stream i ng Manager (SSM) 

- Real-time synchronization 

► Multimedia I/O (MMIO) 

- Data independent 

► Multimedia Presentation Manager Controls 

- Secondary Windows 

- Graphical Buttons 

- Circular Slider 


What You Need to Know as a Developer 


► What makes up the MMPM/2 architecture? 

► How does a developer use MMPM/2 features? 

► How does a developer extend MMPM/2? 

► Why is MMPM/2 good for OS/2? 


The Media Control Interface (MCI) 

► Multimedia Device Resource Management 

► Multimedia Device Grouping 

► String and Procedural Interface 






✓ Codecs v CD-DA w/built-in DAC 

o Uttimotion v CD-DA streaming 

o Indeo 2.1 3.1 v CD-ROM/XA 

✓ Video Cards 

• Jovian 
. VCA 

o WinMovie 

• Video Blaster 
o Super Video 
« Video Magic 


•r PCM & ADPCM support 

✓ MIDI Playback w/mapping 

✓ Implicit mixing/sharing 
» M-Audio 

« Soundbiaster/Pro/16 
a MediaVision PAS-16 


✓ Pioneer 
8000 
4200 
4300D 
4400 


String Command Example 


Play a Digital Audio File 

open waveaudio alias w shareable wait 

load w sound.wav wait 

set w time format ms wait 

setpositionadvise w on every 500 wait 

play w notify 

seek w to 0 wait 

play w notify 

close w wait 



String Interface 

Opening a device and loading a file 


#defme OPEN_COMMAND 1 

UCHAR szRetum[CCHMAXPATH]; 

HWND hwnd; 

USHORT usUserParm = OPEN_COMMAND; 

mciSendString ( (PSZ) "open MYAUDIO.WAV alias mydevice shareable notify", 
(PSZ) szRetum, 

(USHORT) CCHMAXPATH, 

(HWND) hwnd, 

(USHORT) usUserParm); 




























String Interface 
Playing a File 


#define PLAY_COMMAND 2 

UCHAR szRetum[CCHMAXP ATH]; 

HWND hwnd; 

USHORT usUserParm = PLAY_COMMAND; 

mciSendString( (PSZ) "play mydevice from 10 to 20 notify", 
(PSZ) szRetum, 

(USHORT) CCHMAXPATH, 

(HWND) hwnd, 

(USHORT) usUserParm); 


Command Interface 
Playing a Fite 

MCI_PLAY_PARMS mciPlayParms; 

USHORT usWaveDID; 

RC rc; 

ULONG ulFrom, ulTo; 

USHORT usUserParm; 

mciPlayParms .hwndCallback = hwndMyDialog; 
mciPlayParms. ulFrom = ulFrom; 

mciPlayParms. ulTo = ulTo; 

rc = mciSendCommand( usWaveDID, 

MCIJPLAY, 

MCIJSfOTIFY | MCIJFROM | MCI_TO, 
(PVOED) (&mciPlayParms), 
usUserParm); 


Command interface 
Opening a Device and Loading a File 


MCI_OPEN_PARMS mciWaveOpen; 

RC rc; 

PSZ pszTempAudioFileName; 

USHORT usWaveDID; 

mciWaveOpen.pszDeviceType = 

(PSZ) (MAKEULONG( MCI_DEVTYPE_WAVEFORM_AUDIO, 1)); 
mciWaveOpen.pszElementName = (PSZ) pszTempAudioFileName; 
rc = mciSendCommand( 0, 

MCI_OPEN, 

MCI_WAIT | MCI_OPEN_TYPE_ID | 
MCI_OPEN_ELEMENT, 

(PVOID) (&mciWaveOpen), 

0 ); 

usWaveDID = mciWaveOpen.usDevicelD; 


Sync/Stream Manager (SSM) 

► Centralized management of resources 

► Centralized distribution of timing information 

► Extendable architecture with stream handlers 

► Data synchronization 

- Cuepoints 

- Position advises 

- inter-device synchronization 

► Efficient data movement 

► Stream time tolerance checking 


Sync/Stream Manager Architecture 



v File system * Memory ✓ Multi-track 

v MIDI mapper v CD-ROM/XA v Video 

✓ CD-DA v Audio 


Sync/Stream Manager 
SpiSendMsg/SpiStartStream 


RC rc; 

HID hidTarget; 

HSTREAM hstreara; 

HWND hwndMyWindow; 

rc = SpiSendMsg( hstream, 
hidTarget, 

SVSH_NEWHWND, 
hwndMyWindow ); 

tc = SpiStartStream( hstream, 

SPI_START_STREAM); 


Sync/Stream Manager 
SpiCreateStream 


RC rc; 

HID hidSource, hidTarget, hToss; 

SPCBKEY spcbkeyMon; 

DCB_AUDIOSH dcbVideo = {sizeof(DCB_AUDIOSH), M VIDSVJ1$ M , OL 
IMPLJEVCB evcbMon; 

ULONG EventMonProc (PEVCB pevcb); 

HSTREAM hstream; 

HE VENT heveniMon: 


jetximuaiCi ^ v icAi oxijj , ounujouivc-, ot/ii 


rc = SpiGetEIandler ("SVSH", &hToss, &hidTarget); 
spcbkeyMon. ulDatatype = DAT AT YPE_DIG VIDEO; 

spcbkeyMon.ulDataSubType = DIGVIDEO_MONITOR; 
rc = SpiCreateStream( hidSource, hidTarget, 

spcbkeyMon, &dcb Video, (PDCB) NULL, 
(PIMPL_EVCB) &evcbMon, EventMonProc, 0, 

Sr K ctro q m tk/f r*n V 


Multimedia S/O (MMIO) 


► Extendable with I/O Procs 

► Data independece 

- Storage systems 

- File formats 

- CODEC management 

► Data identification 

► Data conversion 

► Internal RIFF support 















MMIO Architecture 



File System 


Multimedia S/O 
mmioGetHeader 


rc; 

hmmioMem; 

IBytesRead; 



(PVOID) &mmaudioliead€r, 
sizeof( mmaudioheader), 
&!BytesRead, 

(ULONG) NULL, 


(ULONG) NULL ); 


Multimedia I/O 
mmioQpen 


#define DATA_SIZE 1024 

MMIOINFO mmioinfo; 

HMMIO hmmioMem; 

HAB habClipboard; 

mmioinfo.fccIOProc = mmioFourcc( ¥, 'A', Y, 'E'); 
mmioinfo. fccChildlOProc = FOURCC_MEM; 
mmioinfo. cchBuffer = DATA_SIZE; 

mmioinfo. pchBuffer = (PCHAR) WinQueryClipbrdData( habClipboard, 

CF_WAVE); 

hmmioMem = mmioOpen( NULL, 

(fonmioinfo, 

MMIO_READ ); 


Multimedia I/O 
mmiolRead 


RC rc; 

UCHAR *pBuffer; 

ULONG ulBufLen = mmaudioheader.mmXWAVHeader. 



rc = mmioRead( hmmioMem, 

(PSZ) ^Buffer, 
ulBufLen ); 



















What You Should Now Know 


For More Information - Books 


► What makes up the MM PM/2 architecture? 

- MCI, SSM, MMI0 

► How does a developer use MMPM/2 features? 

- MCI string and command APIs 

- MMiO and SSM APIs 

► How does a developer extend MMPM/2? 

- Write MCDs, IDProcs, and stream handlers 

► Why is MMPM/2 good for OS/2? 

- Device independence 

- Real-time synchronization 

- File format independence 

- Reduced development effort 


► Books 
-S71G-222Q 

- S71G-2221 

- S71G-2222 

- S71G-2223 

- S41G-2921 


The OS/2 Multimedia Advantage 
Application Programming Guide 
Programming Reference 
Subsystem Development Guide 
Sample Programs Workbook 
Red Books (with sample diskettes) 

- GG24-4042: MMPM/2 Advanced Programming 
Techniques 

- GG24-3963: MMPM/2 Programming Using 
Digital Audio Examples 


For More Information - Articles 


The Design Of OS/2, 2nd Edition 


► Digital video architecture for OS/2 2.1 

- High-Speed Networking and Multimedia 
Computing ISBN: 0-8194-1483-2 

► OS/2 2.1 Multimedia: From In-the-Box toVideo Sn 

- Personal Software Technical Newsletter, # 2 

► OS/2 2.1 Multimedia 

- OS/2 Monthly, Issue 10 


► Available Fall 94 

► Highlights 

- Updated to cover OS/2 2.1, 2.2, OS/2 for 
Windows, OS/2 for SSWP, Workplace OS 

- New chapters on Multimedia, Multiprocessors, 
and Microkernels 

- Expanded coverage of latest microprocessor 
technologies (Pentium, PowerPC, Alpha) and 
system architectures 

► Ordering info email lnternet:os2@aw.com 

► 1st edition comments and suggestions email 

Internet :76711.212@compuserve.com or 

C©mpuserve:76711,212 






MM03 


Software Motion Vj^eo for OS/2 
Uitimotion and 
OS/2 2.1 Digital Video 


Session Contents 


► Uitimotion and Video IN 

- Playback 

- Capture 

► MMPM/2 Video Architecture 

► Demonstrations 


Maria R. Ingold 
Multimedia Development 
IBM Boca Raton 
ingoldm@vnet.ibm.com 



Uitimotion and OS/2 Digital Video 


> Uitimotion 

- SM'V Data stream 
definition 

- CODEC (compressor/ 
decompressor) 


► OS/2 2.1 Digital Video 

- Player software 

- Pluggable CODECs 

> Uitimotion tm 
- imdeom 

> FLl/FLC 

> Others 


Uitimotion Video Playback 










UStimotion Video Playback 


Ultimotion Video Playback Scalability 


► Software motion video playback algorithm 
“16 MHz 386 or above 

- Audio card (optional) 

► Nominal Video Clip 

- 320 x 240 x 15 FPS @ 04K colors 


MMIO Multi-track Read for Digital Video 



■ Resolution Scalability 

- Frame size can be scaled up or down by 
factor of two 

■ Frame Rate Scalability 

- Frame rate is automatically scaled down 
to match playback system 

■ Color Scalability 

- 16 bit true color images (64 K colors) are 
scaled down to match playback system 


Digital Video Playback 





























► Intra frame compression "1-Frame" 

- Reference frame compressed without regard 
to previous frames 

- Variable 1-Frame rate selected at capture time 
9 - Delta frame compression 

- Only the differences between current and 
previous frame are compressed 


16 MHz 386 or above 

- Audio card 

- Simple "frame grabber" video input card 
Variable frame size and frame rate selected at 
capture time 



Asymmetric Capture 

- Frame accurate video source 

- Laserdisc 
Symmetric Capture 

- "Live" video source 

- Camera, VHS, Cable Tuner 
Raw Data Capture 

- Vide© captured in uncompressed format 

- Frame accurate compression offline 









Asymmetric Video Capture 

► Frame accurate video source 

- Laser videodisc with COM port interface 

► Video compressed frame by frame - 1 to 5 
seconds per frame 

► Audio captured in real time 

► Audio and video files interleaved 


Raw Data Video Capture _ 

► Vide© is captured in real time from live video 
source 

► Uncompressed video is stored on disk 

► Frame accurate compression can be done at 
later time 


Symmetric Video Capture 


► Audio and video captured in real time from live 
video source 

► Frame rate determines amount of time available 
for compression 


Uitimotion Data Rates 

► CD-ROM Playback 

- 320 x 240 x 15 FPS @ 64K colors = 9 
MB/minute (150 KB/second) 

► Double Speed CD-ROM or Hardfile Playback 

- 320 x 240 x 30 FPS @ 64K colors = 18 
MB/minute (300 KB/second) 



Digital Vide© Record 




MMPM/2 Architecture 



Video Capture Adapters 

► Video Blaster - Creative Labs 

► Video Capture Adapter - IBM 

► SuperVIA - Jovian 

► QuickVIA - Jovian 

► Super Video Windows - New Media Graphics 

► Video Magic - Samsung 

► WinMovie - Sigma Designs 


















Demonstrations 


For yore Information - Books 


► UStimedfa Video IN User's Guide 
- 82F4224 



For More Information - Articles 

► Digital video architecture for OS/2 2.1 

- High-Speed Networking and Multimedia 
Computing ISBN: 0-8194-1483-2 

► Inside OS/2 Software Motion Video 

- Dr. Dobb's Multimedia Sourcebook, #209 

► OS/2 2.1 Multimedia: From Sn-the-Box t© Video 
In 

- Personal Software Technical Newsletter, Issue 
2 

- OS/2 Monthly, Issue 10 



Ultimedia Product Family 


► WorkpSaee/2 

► Perfect lmage/2 

► Bulfder/2 

► Manager/2 

Peter C. Yanker 
Advisory Programmer 
IBM Almaden Research 


Multimedia Creation and 
Management 


Ultimedia Product Family 

► 32 Bit applications 

► Multimedia tools for the Multimedia and 
business professional 

► Easy to Use 

► Casual to Professional 

► Workplace Shell Drag and Drop 

► Interactive Tutorials 


Ultimedia Product Family 

* OS/2 Device Support 

► Display Adapters 

► Multimedia Adapters 

► industry Standards Support 

► TIF, AVS. BMP. PCX. WAV. TQA. JM. AVI 

► CD-ROM Media 

Application 

► Samples 

► All Product Tutorials except Manager 




Ultimedia WorkpSace/2 


Uitimedia Workplace/2 


► Multimedia Data Management Tools 

► Visual Multimedia Data Management 
»- Image Thumbnails 

► Media Browsers 

► Workplace Shell Support 

► SOM - System Object Model 

► Extended Attributes 


► Data Query Support 

► SQL Queries Against Extended Attributes 

► Database Support 

► OS/2 DB2/2, dBase IV, Oracle V.6 


Ultimedia Perfect lmage/2 


Ultimedia Perfect f mag e/2 


► Capture, Edit, Enhance 

► Import/Export Multiple Formats 

► Display Independent 24 bit Support 

► Advanced Image Editing Tools 

► Cut, Copy, Paste, Resize, Rotate, Crop, Zoom 
* Color Enhancement Tools 

► Masking, Filters, Blending, Balance, 

► Mapping, Adjustment 


► Text Plane Support 

► Text/Trigger Field Editor 

► AVC Image Format 

► Print To OS/2 Printer 

► Interactive Help 



Ultimedia Builder/2 


Ultimedia Builder/2 


► From Simple Slide Show so Advanced 
Interactive Applications 

► Image, Audio, Video and Text 

► Text Plane Support 

* AVC image Format 

► Animation 

► Graphical Definition 

► Effects 

► 41 Dissolves and Transitions 


► Graphical User Interface 

► Film Strip Metaphor 

► WPS Drag and Drop 

* Generates AVA/2 Language 

► Text User interface 

► Full AVA/2 Access 


Ultimedia Builder/2 


AVA/2 Language 

REXX Based Scripting 
Full Function DP Language 
Extendible to DLL's, Named Pipes 
MCI Calls 


Ultimedia Manager/2 

► Image Recognition/Management Tool 

► Based on Image Content 

► Color, Texture, Shape and User Text 

► Classification and Query 

► Content Based 

^ skis a mass'll sal 

r- v:v::v:«iW n^wastv: twsss 

► Database Storage, Queries 





Demonstration Hardware 


IBM PS/Value Point model 466DX2/D 
SoundBlaster Audio card 
20 Megabytes of memory 


Business/Office 

Presentations 

Advertising 

Kiosk 


Multimedia Applications 


Education Training 
Computer aided instruction 
interactive Training 
Multimedia encyclopedias 


Multimedia Applications 

Consumer 
Digital libraries 
Electronic museums 
interactive TV 
Video on-demand 
Home shopping 




MM06 


Pen for OS/2, 

Pen and Speech Enabled 
OS/2 for PowerPC, 
and PenDOS 


Moe Desrosiers 
Mobile, Voice, and Pen Software 
PSP Boca Raton 


Pen Operating System Segmentation 



Mouse vs Pen 


Using "ink" As A Data Type 


» Mouse 
. Pointer Device 
. X, Y, Buttons, Movement 
* Data Point Consolidation 



- Note Taking 

- Annotation of Text or images 

- Signatures 


► Pen 

. Pointer and Data Device 

. X, Y, Buttons, Movement, +/-Z (Height, Pressure) 
. Proximity Reporting 
. 80-200 pts/sec, 200-1000 pts/inch 
. No Point Consolidation 
. integrated Sensor and Display Device 


■ Freehand Drawing 
- Teleconferencing 
































































ANYTIME ANYWHERE WORKER 


Same User Take Advanta 9 e Of Pen 
Take Advantage Of Interface When Available 



Pen DOS 


PEN SOFTWARE STRATEGY 



► Low End Devices Multiple Applications 

* Single Application *. 32-Bit Devices 

► Existing DOS Applications ► Existing DOS, Windows, 

>- New DOS Applications OS/2 Application 

>► New OS/2 Applications 


PenDOS version 2.2 


PenDOS provides a pen-enabled 


operating environment which / ac ® 

supports existing DOS L HRS 

applications... /h/W device'', 

/specific support 


/ \ / Pen input enabled \ 

/TSR \ /operating environment \ 

/PENDOS\ ^ . 


, ANY DOS 5.0 \ -and "pen-centric" DOS 
OR HIGHER \ applications written to the 
(MS, IBM, DR) \ PenDOS API. 


HRS = CIO'S HAND WRITER RECOGNITION SYSTEM 

































PenDOS 2.2 Product Description 


i GME j 


(TRAINER 1 ] 


/" U. S. N 
^ HRS 


PenDOS 

Core 


PenDOS COre: " = — 

. Mouse Emulation .y If 

. Writing Window (§IG-VeWs „J~. 
- Soft Keyboard ^ f API 

• Gestures — 


/•'EUR "\ 
^V^HRS r y 

/1DBCS'/ 
“ VHRS J 


\ V 


(APPLETS) 


HR8 = aCS HAND WRITER RECOOMTIOW SYSTEM 


PenDOS Product Deliveries 


j PenDOS 
| 2 .® 

January 1993 June 1993 July 1993 

15 devices 20 devices >20 devices 

supported supported supported 

CICs award QIC’s numeric CIC’s Handwriter 
winning HRS 3 Reeo engine Recognition System 

Adds opaque Additional opaque 

tablet support tablet support 

Ships with Applets 


PenDOS 

PenDOS 

in PC-DOS 

2.2 


HRS = CICS HAhEWRITER RECOGNITION 8Y8TEM 


































PenDOS Developer's Toolkits 



Pen for OS/2 


DOS APR COMPATIBILITY 
QUICK & EASY APP DEVELOPMENT 
LOW RESOURCE CONSUMPTION 
GROWING MARKET SHARE 
"AWARD WINNING" HWX RECO 


From CONVERTIBLES to the PDA, 
PenDOS is the environment of 
choice for DOS-based applications. 


Pen for OS/2 Features 

- Packaged As Extensions to OS/2 2.1 

■ Set of DLLs, Device Drivers and Tools 

- Runs All Existing Apps Unmodified (PM, 
VIO, WInOS2, DOS) 

- Mouse Emulation 

- Gesture & Handwriting Recognition For 
Existing Apps 












Pen for OS/2 Features (cont. 


< Compatibility Tools 

- Pop-Up Keyboards 

- Handwriting Input Pad 

- Sketch Capture Pad 

- Pen Tool Bar 

- Gesture Assistance 

- Application or User Supplied 


Pen Extensions 


Pen for OS/2 Features (cont.) 


- Tools For Writing Pen-Aware 32-Bit PM 
Apps 

. WPS Objects For Device, System and 
Gesture Customization 

» Tools For Writing Pluggable Pen Drivers 

- Telepen Network Conferencing Applet 


Pen API Categories 
. Wrt - Writing Subsystem 

- New Pen Messages 

- Device and System Control 

- Stroke Delivery and Transformations 

« Red - Recognition Event Delivery 

- New Recognition Messages 

- Gesture Event Delivery 

- Gesture Mapping Support 

- New Window Controls 

- Stroke Collection and Recognition 

- Device Driver Services 



























Wrt - Writing Subsystem APIs 


■ Point and Stroke Data 

- WrtQueryStrokeData 

- WrtMapPointLong 

- WrtQueryPointAuxData 

- WrtQueryEventData 

■ Device Configuration 

- WrtQuerySystemCaps 

- WrtQueryLocatorCaps 

- WrtQueryButtonCaps 

- WrtQueryDisplayCaps 

- WrtControlDisplayBacklight 

- WrtQuerylnputDeviceNames 

* System Values 

- WrtQuery/SetSysValue 

- WrtRead/WriteSysValue 


New Messages 


WM_TOUCHDOWN 

WM_LIFTOFF 

WM_TAP / WMJDBLTAP 

WM_STROKE 

WM_SENSORMOVE 

WM_EXST_PROXIMITY 

WM_RECO 

WM_RECO_COMMAND 



Red - Reco Event Delivery APIs 


- Interpreting Gesture Events (WM_RECO) 

- RedQueryRecoHandle 

- RedQueryRecoSubsystem 



Message Flows 



"No Movement" 






















Message Flows 


Message Flows 



Mew Window Controls 


Sketch Control 

■ Use For 
Signatures 

■ Use For 
Annotation 


. WC_SKETCH 

- Query/Set Ink Width and Color 

- Undo Stroke 

- Clear Stroke 

- Set Invisible Ink 

- Set Drawing Pointer Shape 

- Render Strokes to Clipboard as BMP 

- Get Bitmap 


— utiunoo 


- Borderless Option 



Strokes Inked and 
Buffered For You 







































New Window Controls 



. Link With PENPM.LSB import Lib 



✓ Calls are Direct 

✓ Won't Load w/o Pen 
Extensions Installed 

■/ Use For Pen-Specific 
Applications 


(or) Link With PENPMST.LIB Static Stub Lib 



✓ Calls are Indirect 

✓ Loads Even Without 
Pen Extensions 

✓ Use For Pen-Modified 
Applications 

✓ Only One Copy of 
.EXE Needed 


Programming Guidelines 

■ Avoid Keyboard-Only Functions 

- Provide Accelerators (To Enable Gestures) 

■ Use Listboxes and Combo Boxes Often 

- Add Drawing and Annotation Features 

■ Supply Gesture Handlers w/o Modifying Your App 


■ Portrait Display Considerations (480-wide) 

■ Visual Pointers Not "Always" Needed For integrated 
Sensor/Display Unit (You Should Check) 


Hardware Support 

Opaque Tablets How So get a Device Driver 

► Wacom (SD-510C, SD-42X, Shipped with Pen for OS/2 
SD-PL100V) 

► Wacom (VD-1212, VD-1218, see Note 
SD-PL200V) 

>- Wacom ArtZ WACOM, 1-800-922-6613 

► Kurta (XGT Format 3) Shipped with Pen for OS/2 

► Kurta (VTS-5, Color) see Note. 

► All CalComp opaque tablets, Shipped with Pen for OS/2 
including CIC Handwriter Tablet 

► Appoint (Gliffic Plus) see Note 


Note: All of the above device drivers are available on Prodigy, 

CompuServe and TalkLink. Or, call IBM, 1-800-627-8363. 






























i m 'inmkpmi 7WP, 3 bop, 730 T mpp$4 mm ThinkPad 

IBM ThinkPad 71t»T SOaNdtS 

AST (Grid SeOHCfe 

.. Compaq concerto swHofe 

- Das^sfwn STR-t see Hole 

- Task se@ Hoie- 


Hole: M of She above device drivers are available on Prodigy, 

-Oofflfmsswvearsd TalkLinfe. Or, eat! IBM, 14KXHS27-8!M»3. 


PenDOS and Pen for OS/2 SDK 


► Join The Pen Developers Assistance Program 
- Call 1-800-627-8363 

•> The Developer Connection for OS/2 

(Pen for OS/2 Product snd Toolkit only) 

- Call 1-80Q-6-DEVCON 


Downloading Device Drivers 


► Available* vlaTalkUrsk* on OS2BSS, to lira Software 
library, Is a section named OS2FIXSS. 

For access, call 1-800-S47-12B3* Ask lor a 
subscription to Tatktlnk to access 0S2SSS. 

► Available, via Prodigy, In the OSMofe, In the Ikes 
section of the IBS# iflss. 

For access to Prodigy, cel t«8dW2t4«5$3& 

► Available, via CompuServe, on OS2PF2, section 7, 

: ; For access to dowfmserve, qsB i*«0M2«M, 


PenDOS and Pen for OS/2 


► OEM and Direct Response Marketing offerings 
from IBM 

* For more Information, 

- Call IBM OEM Marketing 


«► For ordering information, 


- Cali IBM Direct Response Marketing 
1-800-3SBM-OS2 







ruiure nans 


Pen for OS/2 
Pen Enabled 

OS/2 for PowerPC 


Pen for OS/2 Enhancements (cont.) 
Enhanced Compatibility Services 

- Writing into Text Windows 

- Confirmation Window (User Preference) 

- Adjustable Pen Input Rate (per program) 
Gestures Assignments for WPS Objects 

- Most WPS objects instances 

- Program and Folder Class objects 

- System level assignments 
Async Support in TeSepen 


Pen for OS/2 Enhancements 


► Mew Programming Interfaces for Handwriting 
and Stroke Collection 

- SOM Objects 

► the IDF Framework 

- PM Controls 

» Enhanced boxed control 

► Pen-centric SLE and MLE 

- APIs 

► WrtHandwritingWindow 

► Mew Pen Input Messages 

- enter proximity, writing started, enter/exit 
window 


OS/2 Enhancements for Pen 

WPS Enhancements 

- Gesture support (help, open, delete...) 

- Pickup and Place support for moving, 
copying and shadowing objects 

- Restart button on Shutdown dialog 

PM Controls Enhancements 

- Left-handed scroll bars 

- Sizeable scroll buttons on slider control 

- Pen-centric MLE and SLE 

Portrait/Landscape Video Modes 


Pen Messages 


WM_ENTER_PROXIMITY 

WM_ENTER_W1ND0W 

WM_EXIT_WINDOW 

WM_WRITINO_MODE 

WRfl_TOUCHDOWN 

WMJJFTQFF 

WM_TAP / WR/i_DBLTAP 

WMJSTRQKE 

WMJSENSORMOVE 

WM_EX8T_PROXlMITY 

WM__RECO 

WM_RECO_COMMAND 


Red - Reeo Even! Delivery APIs 
- Interpreting Gesture Events (WP_RECO) 

- RedQueryRecoHandle 

- RedQueryRecoSubsystem 

- RedRecolDFromName 

- RedRecoNameFromID 

RECODAT A _ " 

.ID =42 (= "PIGTAIL") 

* Virtual ID = VE_DELETECHAR 

. Bounding Box = Max X,Y Points 

* Hot Spot = Touchdown Point 

* Target Window = Hot Spot Window 

* Cmd + Args = From Profile 

* Assignment Type 
= User | System 
= instance | Class | Sys- 
= Read | Read/Write 




Wrt - Writing Subsystem APSs 


- Point and Stroke Data 

- WrtSetWindowPointRate 

- WrtGueryWindowPointRate 

- WrtQuery Stroke Data 

- WrtMapPointLong 

- WrtQueryPointAuxData 

- WrtQueryEventData 

- Device Configuration 

- WrtQuerySystemCaps 

- WrtQueryLocatorCaps 

- WrtQueryButtonCaps 

- WrtQueryDisplayCaps 

- WrtControlDisplayBacklight 

- WrtQueryinputDeviceNames 

* System Values 

- WrtQuery/SetSysValue 

- Wrt Read/WriteSys Value 


Sketch Control Enhancements 


Sketch Control 

■ Eraser mode 

■ 1,2 and 4 pel ink 
widths 

* Get/Set High 
Resolution Strokes 

- Use For Signatures 
0 Use For Annotation 


* WC_SKETCH 

- Get/Set Standardized Strokes 

- Get/Set Scaling mode 

- Get/Set Eraser mode 

- Get/Set Background Bitmap 

- Query/Set Ink Width and Color 

- Undo Stroke 
— Clear Stroke 

- Set Invisible Ink 

- Set Drawing Pointer Shape 

- Render Strokes to Clipboard as BMP 

- Get Bitmap 

- Get Strokes 

- Borderless Opl 


Strokes inked and Buttered For 
You 



















Handwriting Control Enhancements 
(WCJHWXENTRY, WC_ENTRYFIELD, WC_MLE) 


Enhancement 

Boxed 

Lined 

Unlined 

► Tab and Enter gesture 

Yes 

Yes 

► Variable box size 

Yes 

IW A 

*> Variable line spacing 

N/A 

Yes (lined) 

► Variable colors (ink, text, boxes or 

Yes 

Yes 

lines, background) 

»> Variable ink width 

Yes 

Yes 

> App specified pointers (proximity, 

Yes 

Yes 

writing) 

> Recognition constraints (symbol 

Yes 

Yes 

sets, word lists, dictionary) 

► Delayed Recognition 

Ho 

Yes 

«- Support in Handwriting Pad 

Yes 

Yes 


input Data Framework (IDF) 

* SDF fs a SOM object based framework that 
provides and manages all aspects of pen Input. 

- Inking 

- Stroke Collection 

- Text and Gesture Recognition 

- Results post-processing 

► IDF consists of three major object categories: 

- input Data objects (he., stroke, doodle) 

- Input Data Recognition (he., text, gesture) 

- Input Data Managements (he., inking, 


Handwriting and Stroke Collection 
APIs, Controls and IDF Objects 



input Data Manager (IDM) 

Acts as an agent for aware applications 
Provides both an object-oriented and a 
procedural programming model 
Manages the following operations: 

- inking 

- text recogntion 

- gesture recognition 

- stroke collection 

Provides application notification throughout the 
IDM operation 

















































Input Data Objects (IDO) 


s- Encapsulates STROKEDATA 
9 - Provides services to: 

- Scale points 

- Draw stroke (on screen, off screen) 

- Playback stroke 


► Add/Remove/Query Stroke objects 

► Record/Playback Strokes 

► Draw doodle (on screen, off screen) 
» Offsets points In doodle 


Input Data Recognition (IDR) 

Text 

9 * Transforms strokes to text 

► Discrete characters (boxed, lined, unlined) 

► Multi-threaded object 

- recognition occurs in a background thread 

- Inking occurs on the user thread 

► Recognition can be constrained: 

- Symbol list subsets (he., uppercase, numbers) 

- Word lists (i.e, Florida, Massachusetts, Ohio...) 

- Words in System Dictionary 

► Multiple results returned (most iikely-to-ieast 


Input Data Objects (cont.) 


Inker 

v inks with different ink width, color, style, mix 

► Ink or Erase mode 

► Erases to background coior or bitmap 
9 - SetPoint / SnkPoint interface 

► Process pen messages interface (manages 
pointers) 


Input Data Recognition (cont.) 


9 - Transforms strokes to gesture 

- System gestures 

- Letter gestures 

9 . Recognition can be constrained: 


- Gesture list subset (i.e., VEJEDIT, VEJNSERT, 
VE_DELETE) 


► SOP Object based transformation object 

► Two transformation modes: 

- JOTJNPUT (input JOT format data, output 
STROKEDATA or doodles) 

► JOT_0UTPUT (input STROKEDATA or doodles, 
output JOT formatted data) 

► No data loss on STROKEDATA to JOT to 
STROKEDATA transformations 

► Data toss Is possible on JOT to STROKEDATA 
to JOT transformations. Problems: 

- proximity points, height data, groups, opacity 


Pen Extensions - After 


Pen Extensions - Before 



Pen Compatibility Services Flow - Before 


























































































































































Pen Compatibiiity Services Flow - After 



IBM Speech Family 

Puts the Power of Speech on the Desktop 

► State-of-the-Art Technologies 

► High Accuracy 

► Ciierst/Server or Stand-Alone 

► Real-world Applications 


ruiure nans 


Speech Enabled WPOS 


IBM Speech Family 
► Four Platforms 

- IBM Personal Dictation System (IPDS) 

► Large Vocabulary, Premium Desktop Dictation 

- IBM Speech Server Series (ISSS) 

» Large Vocabulary, Premium Dictation, Ciient/Server 

- IBM Continuous Speech Series (ICSS) 

* Continuous Speech, Speaker-independent 

► Premium Command/Control, Transaction Processing 

- Voice Type 2 

» Value Dictation 












Current Speech Recognition Technology 


Speech Enabled OS/2 for PowerPC 
Product Description 


IBM Persona! Dictation 
System 


LARGE Vocabulary (20K) 
Discrete...Word 

...rain...in... 


Training Required 
Speaker Dependent 





® Dictation 

• Free-form text 

♦ Word processing 
« E-Mail 

- Industry Applications 


IBM Continuous Speech 
Series (ICSS) 

Medium Vocabulary (1K) 
Continuous Word 
No Training Required 



Speaker Independent 



* Command and control 
ft Stock Brokers 
ft Kiosk applications 
♦ Simulation and training 
« Computer navigation 


► Port of IBM Personal Dictation System (IPDS) 

- 20K+ Word Active Vocabulary 

- 32K Word Capability 

- State-of-the-Art dictation accuracy 

- Specialty Vocabularies 

► General Business 

► Emergency Medicine (EMS) 

- Radiology 

► Journalism 

* More planned (Segal, chiropractic, 
engineering, police, etc.) 


Speech Enabled WPOS 

Product Description (cont.) IBM Speech Products Information 


► Enhancements to IPDS: For more information... 

- Speaker-independent navigation 

- Separately configurable options Call 1-800-TALK2ME 

► Navigation 

- Dictation 

- Concurrent access by multiple processes 

- No Speech card required on PowerPC 
platform 

- Microphone is shared via MMPM/2 





Pen for OS/2, 

Pen and Speech Enabled 
OS/2 for PowerPC, 

ansBBsys rK8 blaijo 


Moe Desrosiers 

Mobile, Voice, and Pen Software 
PSP Boca Raton 





Agenda 


OKS Personal Software Products 

Object Technology 


The Next Software Paradigm: Objects 
<5 ^» IBM's Object Technology Strategy 
IBM's Object Technology Products 

- D«Alr«<nri^ T^TU-^B 

w «. a tcvaiuiuuraiufgjr 

® Distributed Object Services 
« Application Frameworks 
• Professional & End User Tools 

< ®%» IBM's Operating Systems Direction 

® IBM & Taligent 


BUS Personal Software Products 

The Business Benefits of Object Technology Object Technology 

























Dynamic Business Process Re-engineerin 


SJH Personal Software Products 

Object Technology 



Business Models & Workflow 



Structured Programming Model ° b i ect ° rlented Model 



















































An IBM Vision for Objects! 


SUM Personal Software Products 

Object Technology 


IBM’s 0 


<> Intuitive 
» Easy & Productive 
o Flexible & Extensible 
o Anytime...Anywhere 



End User Experts 


* Visual Construction 
- Applications 
— Procedures 
> Flexible & Extensible 


_j o 'Plug & Play' 

Engineers & Domain 1 


Object Modeling (Metaphors) 
Reusable Designs & Software 
Flexible & Extensible Software 
Programming via: 

-Find 
— Assemble 

— Creation by Expansion 


® Open & Extensible Binary Objects 
® Language Neutral & Industrial Strength 

/ Software Component Highways 

® Distributed Object Services 
® Full OMG CORE A 1.1 Compliance 

/ Component Sc Framework Industry 

® Automates the Design & Development of Applications 
® Component Oriented Assembly (Plug & Play) 


/ Choke of Development Sc Assembly Tools 


® Professional Development Solutions 
® Visual Programming & Assembly Tools 


P* ft 


ESffl Personal Software Products 

Object Technology 


Obiect Packaging Tecimolo 


W& Personal Software Products 

Obiect Tet 


IBM is an Industry Leader in Exploiting 
Object Technology Starting 2 Years Ago!! 

v" Exploited in Products TODAY 
v Provides Unique Benefits 
v Objects are Strategic to IBM’s Future 


Object Enabling 
for OS/2 


Advanced 
Object Enabling 
OS/2, AJX & Windows 


[gent 



”Islands of Objects ” 


C++ 

C++ Smalltalk 



<m \ ** 


sa Sm 

| 

BflH| " 


$1$° & | 




✓ SOM / OO Tools 


Vdsomc/s 

v OMG CORBA 


iiiwiir' 

11 ta lk 

Workframe 
: : : : : ; :^ : if*i’rtner Tools 


:j:jjg:$penDoc 

^‘Portability 
✓ Advanced Desktop 
v Enterprise 


The Key to True Software Reuse: 
OBJECT PACKAGING TECHNOLOGY!! 


Business Tools 
4GLs Case Tools 
REXX Basic 
C COBOL etc " 


Binary 

Software 

Objects 


Binary Upward 
Compatible Objects 




Open and Extensible Software Components 















SHI Personal Software Products 


'Z Object Packaging Technology 

e Encapsulation 
e Inheritance 
e Polymorphism 


\f Industrial Strength Class Libraries 

® Binary Object Distribution 
o Binary Upward Compatibility 
« Shared Class (Execution) 

0 Highly Compact & High Performance 


)/ Language Neutral 

« C, C++, Smalltalk 
® ORexx, Object Cobol 
« Native Compiler Support 
® Others 


y Binary 'Black Box' 
Reuse 



y OMG CORBA Compliant 



y Broad Platform & Industry Support 

• OS/2 « HP/UX 

0 AIX 0 OSF/DME 

« Windows e MVS 

o WP/OS « AS/400 

• System 7 « ISVs 

« Netware « Others 


Distributed SOM/CORBA 


WM Personal Software Products 

Object Technology 




Class Definition 
(IDL Interface) 


SOM Language Neutral 
Interface definition Lang. 
(CORBA IBL) 


Native Code (eg, C++) 

.f.' 


. . . 

SOM/TOL 

i IDL Interface - 

Native SOM Stqppart 

Compiler 

. . 

(eg, C++ Compiler) 

/ 


n SOM Mode" 
Switch On 


Lang. Implementation 
Template 


Write 

Implementation 

Code 



SOMobjects Developers Toolkit 


IBH Personal Software Products 


>■ Object Packaging Technology 

> Distributed Object Services (ORB) 

> Fundamental Frameworks 

s> Full OMG CORBA 1.1 Compliance 




Utilities 



« C/C++ Bhidings 
+ OEDL Migration Aid 
« Interface Repository 
« Headers & ExeeutaWes 


Workgroup Enablers 
















































SOM/DSOM Directions 


Supportive Tool Sets & Partnerships 


09 Personal Software Products 

Object Technology 


09 Personal Software Products 

Object Technology 


C++ Compilers/IDEs i 

y IBM C Set++ (Native) ' I 

y Metaware High C++ (Native) j 

v Wateotn C++ (Native), i 

V Borland C++ i 


Visual Smalltalk Environments 

'/IBM VisuaJAge (Native) 
y ParcHace VlsualWorks; (Native) 
y Bigit&Ik Smalltalk/V & Parts (Native) 


ANSI C Sc C++ Compilers 

y SOMobjects C/C++ Bindings 


4GL.s Sc End User Tools 
y Watcom VX-REXX 
v IBM OREXX (Native) 
y Objective MacroScope (Native) 
y AM - Intelligent Environments 


Announced Tool Support 

y Microfocus COBOL 

y- Intermedia 

y Object Design 

✓ Kaseworks 

y inference 

</ Others in Works... 

y Easel Corporation. 



Frameworks 


mmmmrnm 


>/ Enterprise Support (OSF/DCE) 
/ CORBA Object Services & FWs 

'S CORBA Partnerships 

® Hewlett Packard BOMF 
• Sunsoft DOE 
® Others 


✓ 


Expanded Platform Support 


/ 


Pervasive Language/Tool Support 


• C/C++ Bindings 
» IBM C/C++ 

® IBM Camelot 
o Metaware C++ 
a Borland C++ 
e Digitaik Parts/STV 
® Microfocus COBOL 


o Parcplace 
® Inference 
a Kaseworks 
o Object Design 
a Easel 
® Intermedia 
o Others _ 



CORBA Object Services 



Application Frameworks 


OS Personal Software Products 

Object Technology 


Fundamental Framework - Replication 


OS Personal Software Products 

Object Technology 


Application Framework 

"A Generalized Solution to a Complex 
Problem, which is Captured in a 
Framework of Interacting Objects , 
That is Designed to be Customized & 
Integrated with other Frameworks 9 ' 


/ 


Automates the Design, Development and 
Maintenance of Complex Application Domains 


/ 


Significant Increases in Productivity, Quality 
and Innovation 



Specialized to Meet 
YOUR Goal! 



Automates the Design and Development 
of Distributed, Replicated Objects 

© Hides Complexity 
© Significant Code Reduction 
® Flexible & Extensible 

Single Logical View of Multiple Objects 

® Automatic Logging & Synchronization 
• Locking for Control Policies 
® Fault Tolerance & Master Recovery 
® Low Overhead for Zero Replicas 
® Distributed & Cross Process Replicas 



/ 


Basis for Innovative Distributed Applications 


® Collaborative Applications 
• Cashing Policies 



























IBM SOM Frameworks 


®31 Personal Software Products 

Object Technology 


Workplace Shell 

✓ GUI Integration 

✓ Reuse of Function 

✓ SOM/CORBA EDL 


OpenDoc 

v Compound Documents 
v Truly Open 
v Enhanced Functionality 
v Easier to Program 
v OLE Interoperability 


Tallgent Frameworks 

v Design/Dev. Automation 
•s Cross Platform APIs 
v Productive & Innovative 
✓ SOM/CORBA IDL & C++ 



„ TSSL Personal Software Products 

OpenDoc Compound Document: Architecture object Technology 


Component Integration Laboratories 

v IBM v WordPerfect ✓ Oracle 

v Apple s Taligeet * . 

OpenDoc ^ Novell v Xeros 





^ OS/2 ) ^ WndoTrg j ^ Sy*tcm7 j ^Netware j ^ _ J 


Distributed & 
Cross Platform 





Document Centric, GO User Interfaces 


HX Personal Software Products 































































juarado|3A3@ nopB3i|ddy juaSifex 

SWPOJA aJVMltOf! HMOSJ 3 A | p^ | 


$TOpus>dapii| ?$ iocIq ® 


SJOOJ W3Wdop<M(l QQ /< 

sps9uodtuoj $> syjOM9tumj qq /> 
swatsd$ SutfOMdo oo ting /> 

nopBjioidxg OO W& ® 

§Mpmdino3 affiieopn|OA3^j ® 




soiSoiouqsax jlq / arrHT a 9S®q^|^(|/iC||A|p3llil03 ® 

insraasaopng; |na 3 |prx a sa| 8 oioni( 3 ax XO SO ® 

snaoj sav 'Apv a smaox 3 |fcJodLi 03 /dSudLia:pig • 


raeax ’ Aa CI 3-*°0 • 
s^poMamtux aTCXs • 
SE30X Ja§X"p®3 ® 


dH 




dSojotitjMji pzfqQ 

sjonpojj 3 j»M.tfos j&uosjsj jggj 


aampuaqiq; 9 |dp|nj\[ - * 3 Ui ^ms§||bx 



ASofompjjr pdfqQ 

stvnpojj puos&d mrg 


raopefOAg |M3rae30|3 panod 10103 




































suot$t)3tjddy potiuj uotsstjpft/ sstidiaws (S/D) dV ausm qdddw&j 




yjOAiatuMrf aoiABQ sottjdm*) 


wafqo 

stmpoJJ v&Mtfosivuosoj j pg 


IMS^ipx - 




















Graphics Device Framework 






















nd Document Evolution 


IM Personal Software Products 

Object Technology 


Taligent, Inc* - Multiple Inheritance 


HIS Personal Software Products 

T 


msmwmm 




































B8M Personal Software Products 

Object Technology 


IBM Personal Systems Platform Direction 


Increasingly Rich 00 API s (Preserving Traditional APIs) « « «« b«m 




AS/400 OO System Structure - Direction 


USS Personal Software Products 

Object Technology 


Increasingly Integrated Object Capabilities (Preserving Traditional APIs) 3 m ^ ^ 


Languages / Tools 

/ C++ IDE 

Smalltalk (Envy/400 

V RPG, COBOL, C 
</ 4GLs 

Industry Frameworks 

(Retail, Finance, Health, CIM, etc} 

Cross Industry Frameworks 

(OMG Object Services, Business Objects} 

■ System Midware : ' • |W 

(System Class Libraries <& Genemal Object Services) slllll 

. Taiigent 



MVS Object Oriented Solution - Direction 


XSF3 Personal Software Products 

Object Technology 


Increasingly Integrated Object Capabilities (Preserving Traditional APIs) 


Services 

y Education 
v Consulting 
'f Contract Engineering 
V Business Engineering 



Industry Frameworks 

(Product Mgr - CIM, etc} 



Class Libraries/Frameworks: 

(OMG Object Services, ACTS, etc) 



Language / Tools 

x (C, C*+, OOCoboi, OREXX, etc} ' • ; 


■&SOM/CORBA' 


Summary & Roadmap 


ffW Personal Software Products 

Object Technology 


IBM's Object Technology Products 

e Object Packaging Technology 
@ Distributed Object Services 
® Application Frameworks 
© Professional & End User Tools 


Object Enabling 
for OS/2 



v SOM / OO Tools 



•/DSOM C/S 
v OMG CORBA 



'§mmm 

iiiiii 


Advanced 
Object Enabling 
OS/2, AIX & Windows 


Ml 




IgjS-iiBipenDoc 

Portability 
✓ Advanced Desktop 
•/ Enterprise 


Utalk 

Workfirame 
:;:#$iiiirtner Tools 



























/ 




0003 


How to Introduce Object to Your Organization 


David Moskowitz 
Productivity Solutions 


How to Introduce Objects to your Organization 


Expectations 

► If you have a question, ask its 

► Overview of a tong term process 

► There is no magic cookie 


Copyright 1994, David Moskowitz. All rights reserved. 


Slide 1 


Goals and Agenda 

► To object or not to object... 

► Understand what OOT means 

► Know the steps to develop a plan 

*- Set a goal to learn from the first effort 


Why Objects? 

► Reusable software 

► Why not? 

► Gui 

► Management wants to 

► Technical staff wants to 

► Competition gives us no choice 


You need a reason to change 



How to Introduce Object to Your Organization 


Slide 2 


Arguments against objects 

► It's too hard to learn 

► Others have had trouble 

► It costs too much 

► Techniques unproven 

► The fad will pass 

You can succeed... 

...if you want to & you have a plan 


The Myths of OOP 

► Objects means reuse 

► Objects means good user interface 

► Objects are a magic cookie 

► OOP Is learning the language 

► OOP is a new way of doing what we do 

► Any good professional can pick up OOT in 6 
months 


The plan - 6 basic steps 

► Pick a problem 

► Make it short 

► Do something measurable 

► Pick a goaf people can commit to 

► Do ft with available resources & budget 

► Evaiutate the results 


Pick the right problem 

► Something with a degree of urgency 

► Not risky, but necessary 

► Vital the team see it through to completion 

► Need only a small team 

► Develop experience 


Copyright 1994, David Moskowitz. All rights reserved. 



How to Introduce Object to Your Organization 


Problems to avoid 

► Critical project, tight budget 

► To© many roadblocks 

► Long term view missing 

► Support lacking 

► No way to evaluate results 


Impact (measurable) 

s- Make a contribution 
» Easier to evaluate results 

► Proejct planned for success 

► Get commitment 

- Staff commitment is more likely if the people 
believe in the results. 


Copyright 1994, David Moskowitz. All rights reserved. 


Slide 3 


Quick achievement (keep It short) 

6- Hold the team together 

► Learning is easier with short duration 

► Low frustration level with Initial problems 

► Add more people sooner 


Available resources 

► More likely to accomplish the task 

► Attract less negative attention 

► Consider outside mentoring 

► Develop internal mentors 



How to Introduce Object to Your Organization 


Slid© 4 


Evaluate results 


Tradeoffs I 

► First effort not perfect 

- Don't plan to keep it forever 
*■ Learn from mistakes 

- What worked, what didn't 
» Iterative development 

► Two parallel efforts & compare 

- OOP 

- Traditional 

- When you finish make changes 

► Low risk & reward 

- Self-help 

- Seif-study 

- 1 person project 

- Some experience 

► Low risk, moderate reward 

- Moderate cost 

- Low impact project 

- Small team 

- ODD St OOP 

- Mentoring 


Tradeoffs II 


Basic goals 


► Moderate risk & reward 

- Medium size project 

- Reengineer 

- Training 

- Mentoring 


► Moderate risk, high reward 

- Strategic project 

- Training & mentoring 
critical 

- Hire experts 


► Effective use of OOT 

► Design and build many classes 

► Learn the tools 

► Learn the class libraries 

► No longer fight OOT 

► Prefer reuse versus build from scratch 


Copyright 1994, David Moskowitz. All rights reserved. 



How to Introduce Object to Your Organization 


Slide 5 


Advanced goafs 

► Object think 

► Reuse designs & classes 

► Translate requirements into models 

► Architects 


Keys to success 

► Process not a quick fix 

► Start reasonable goals 
s- Control expectations 

► Personal mastery & development 

► Keep clients & management informed 

► Control project growth 

► Have a plan, before you start 


The other stuff S 


The other stuff Si 


► Evaluate possibilities 

- Pick a language & tools 

► Study class libraries 

- You can’t reuse what you can't find 

» Keep records of ideas accepted & rejected 

- Today’s reject may be a solution Safer 


► Basic training 

i> Get experience by building tools 

► Prototype 

► Re-architect and re-design 

► Plan for demonstrations 
*- Method mentor 


Copyright 1994, David Moskowitz. All rights reserved. 



How to Introduce Object to Your Organization 


Demonstrations 

► Celebration of achievement 

► Helps develop focus 

► Use ft to re-architect & re-design 


The role of mistakes 

► Mistakes are vita! but only if you learn from 
them 

s- Best if your own team can spot mistakes 


Copyright 1994, David Moskowitz. All rights reserved. 


Slide 6 


► Facilitator 

► Be familiar with more than one 

- Booch, Coad, CRC, Rumbaugh 

► Method support tools 
* Work with small team 

► Small team work with others 


Goals redux 

► Build a common engineering vision. 

► Develop an architecture and framework for a 
product family (plan for reuse). 

► invest in tools & technology to build an 
excellent development environment. 



How to Introduce Object to Your Organization 


Slide 7 


Questions 


► I’ve never heard a dumb question! 


Thank you 


For more information 


► The oniy dumb question is the one that isn't David Moskowitz 

asked! Productivity Solutions; Inc 

164 Avondale Road 
Morristown, PA 19403-2952 
610-631-5685 

76701 A 00@CompuServe.com 


Copyright 1994, David Moskowitz. All rights reserved. 




OpenDoc for OS/2 


OpenDoc for OS/2 
BocumenKJentric Programming 


Robert L, T yeast 
OpeODoO fa f OS/2 Architect 
Baca Raton . liiii 
tycast@vnet JbmnCotTi 


HIHBiiiiii 


- the fettowfag terms, m this pobMtW, am- tr^masfcs O* to* \ 

11 ij &$£ 

«QS£ System 

» th& fc^owmg texmSt sis^c* in thos putrftc^ton, am tra^rnarfe?-of other 

• ' 

- OpenOoc r B^to Appfe Computer ?nc, 

- Urrjy 4$#Xj System taboratortea, Inc. 

- Windows ^orosott COtp. || :il:l:|l \& | ll;:: :;:’ 


: : :; What’s OpertOocf 

v ■.. TS llllllll 

|:||| ©oeiirhent-Gao trie |i|| 

111 ' | ■; I III | lllllll 

: .. ■; . ., : HI 

: - Object Technology 

- Storage 

- Compound Documents 


Application-Centric Computing; 


► Monolithic applications 

► Datatypes limited 

► interoperability limited by cooperating suites; 



















































Bento format; Key Ideas 



Everyth! ng is an object 

Objects have persistent ID's 

Ail metadata lives in Table of Contents 

- Flexible {e„g. support Interleaving) 

- Efficient (Inspecting a container fast) 

- Support existing for mats with out cha 
Objects consist of values 


QpenDoc Storage; 


iiillitii! 


pu?rentPr^t.;; : 

F'stSs-ge Ltoft 




•^afee; 


ii'ffiliatl'ilbdei; 



p - Session 

■ - Globa! operations 

- Examples: memory management, error 
reporting, etc, 

- Provide portability 
► Container 

- Platform independent I/O 

- Provide a stream I/O interface to the container 
storage memory, clipboard, network, etc* . 

VialU6.: : | ; :; ;;'; : |||;|ly‘ : .J !!•'': 

- I/O transformations and indirect values 



Open Doc for OS/2 


liilillilllll 


lipiiliilliilllll 

- Slractee-based 

. - Contrfnw/Objscli^op.; 
** Ifefiv© dafta 
-* Standards • 

- Pertafcfe 

- Extensible 

- Ptatfomts; .. | 

I- OS/2 

* Dos 

ill;.'*- Windows iiiiliii 
|||» UNIX lllllllll 
ill * otc. llllllllllllll 


Iflf Me^dteBi/ibgdadi- f ||| 

- DirectoryTile 
donative data support 
|| No standards ||§||ff| 
-Unknown 

- Unknown 
1 — Pfatfotft*ss 

BmIMMMI 


Compound Document Architecture 

► Heart of the QpenDoc Technologies 

► Provides mixed-data types 

► Ptsihfldeliiy display and printing 

► Based on "part handlers" 

- Editors 

- Viewers 

► Multiple active parts 

*• Irregular, operlapping parts 

► User starts with stationery and builds solution: 

* in-place activation {Inside-out) ■ . ■; ... 


l|ll U nking i 

► Parts dan :share, data with! n the sa me document 
*- Parts can share data with other documents on 
the same computer :fg l|lt||I 
» Parts can share data with documents on other 

i;P^rf®^=.N^ii)hi ddeiimeiitsiOniihe' v 
network of mixed type (full heterogeneity) : j'i". 


■:DpeiDdc;Ardhitectu^; : 



Pag© 4 



OpenDoc for OS/2 


_ OpenDoc Objects 

► Storage System 

- Container 

- Document 

- Draft 

- Storage Unit 
► Clipboard 

* Drag & Drop 
- Link 


OpenDoc Objects; 

► Imaging 

- Canvas 

- Shape 

- Transform 

- WlndowState 

- Window 

- Layout 
. - Frame 

- Facet 



OpenDoc Objects 

. ► Hi Events 

► Miscellaneous 

- Dispatcher 

- Translation 

■ ~ Arbitrator 

- Symbols 

•p; : - FocusModule 7v ; -' 


► Semantic Events 

-Undo |||11!!!!!!!!!!1!!!!#!!1 !lll!!!lli!!!l!!|!|||||||lli 

: .• ' - NameResolver 7 1 

- Extension 

- Semantic Interface 7;; 

- RefCntObject 

p/|ij§ : yes^g|;ifttirface:^j7'7 : : 

- misc Iterators 


Page 5 



OpenDoc for OS/2 


OpenDoc - Object Relationships 




l^^$torage$ygteret 


f' ^ jj 11 ,-i|» j fira& } 







Hfrfcf- Ptsp^ehModute. | 


mm 




► Open Scripting Architecture 

- Fhovldes record/piaybaek 

- Natural language support 

- Pluggable script languages 







Launch "RflyApp” 
Tell "felyApp” 

Pritrt Dpcurnent S 


Zfffl&ilM&mwjit'g.?. 


Open Events 

► Based on a standard registry of verbs and 
object classes 

► Arranged in suites \ ^ \ 

» Define: 

- Events e.g* Open, Close, Select, etc:;;:;:' 

- Object classes e*g< Application, Document 

- Descriptor types e<g* Boolean, Fixed 

- Key forms 


Object Specifiers 

► Every event can operate on multiple objects 

e.g. CUT ' • ' ::; : ;|||||||||||}|;|i| 

:. -Line:' : " . 

-Paragraph 

► Fine-grained objects 

- "3rd word on the fifth line of the 1st page” 

- "Every line whose text contains 'OS/2”' 

'•: object specifiers and decoding them 


Page 6 










OpenDoc for OS/2 



Ofafect Services library 


^'lt means page 1 
token ..." 




| What does this 
I object spec. mean?, ; 


OSA Compliant Applications: 


MOw appl ications can bo;t>iM| from parts 
&ift©rem l;pv;©:is ; pf : :spppp:rt : 

■ ■ I f : H II ! II : llillll III lllli || 
|In|«li. llllllllill!!I! I : « 

- Recordable (Factored applications) 


Page 7 


Open Event Standard Suites 





























































Open Doc for OS/2 


OpenDoc and OLE 


1 OpefsOoc 

- Object programming 

> porta Compliant 
Strong object 
iecfimfogy (SOM} elg 
: mfmiunce supported 

- pe^Dprs^nt^ffors 

* One mmt dace fpert) 
i|||| approx, m methods 
-h Activation motM iiii : 
:{|:| n Mmde-mtt : i|ip:i|||| 
i||| * Highly usable 


> ote : . 

- Disject programming 
modjcf 

- NetCorha Compliant 
|i ; » Weak object 0 :|||g| 

• technology (COM) e,g» \ 
inheritance NOT 
supported 
~ Development effort 
* 14 interfaces 

- 13 B functions 
•<* Acfivaiori model 

M ,* Oiffaide-in .' ; 

•:?.;■ * Poor 01 marks 


Who Owns Open Doc? 


wmm 




wmmm 


*■ Licensed through CILabs 

.1 II li| lllllllilllllll II 

i^forenc©' i mple mentations 
^! Cefertiipisai'lioK ; pFbif rairiiij= : ” I: ? |: 
► For more information 
:: contact CILabs: i' : ' : 


§jj:. : : ;•:•!: I Cfcifcpanerst U&ard fortes. • 

-688 Fourth Avenue 
Sets Frartets&o, CA 941 IS 
( 415 } 750-8352 (VOtC 6 } 

OSA t«5J 757*4829 ffcx) 
jedijielLorg internet 



Page 8 




► GpepDop * OLE 

- Sftapa support - Shape Support 

*• dvertapptrtg <■ nm*averlappkt§ 


>■ irregular (regions) 

: *. Setiptipg model ■ i ; 

§HI automation ||||||| 
1 recottf/playhaGk 

- natural language 
support 

- standard "suites" 

- Certification process 

- Open standard 


- rectangular oofy 

r Scripting model . • lillf 
» automation 

liiiiiillplilii 

- m nature} language 
support 

|| I - no standards- ||:|?||| 

- Mo certification process 

- Proprietary i|||: : i|||l| 
implementation - ;:|||| 


Where to Get More Information 

W The Developer Connection for OS/2 
- 1-800-6DEVCON {U.S.A) 

•• - 45-4-810-1 500 (English) 

| 45-4-810-1000 t^eutsch) 

► CompuServe 

- "CO CS2DF1” 

- OpenDoc for OS/2, Section number 14 





0006 






















VisualAge Features 



Graphical User Interface Development Environment 




Multiple Protocols 
and Interfaces 



£ 


rite Process of Assembly 



Iterations 


'Definition' 


Composite: Part 


Mhd/.dr: 


Fabrication: 


Search for 


Add parts, to 
free-f r tsurfa 


Connections 


Customize 
.• (optional) 


Application Development Environment 


Composition Editor 




Visual Programming 












































CSient/Server Support 


Multiple Protocols And Interfaces 





































Team Programming 


Evolution in Application Development 

























Object Oriented Technology 
✓ IBM Smalltalk 

. complete Smalltalk Development Environment 
* Based on Standards 


Object Oriented Technology 


✓ IBM Smalltalk (continued) 

> Common File System 

*POSIX.1 


> Common Language Data Types and Common Lanaguage 
Implementation 

* Smalltalk - 80: The Lang uage and its Itrmlemsnlslm 

* Smalltalk Portability: A Common Base 

> Common Process Model 

* Smalltalk - 80: The Langu age and its Implementation. 


■* Common Graphics 

* X/Windows 

- Common Widgets 

* OSF/MOTIF 



Development System Requirements 


Runtime System Requirements 


« Client 

> 25 Mhz 486 Micro Processer 
* 16 MB RAM 

> 15 MB Hard Drive 

> 20 MB OS/2 Swapper 

» VGA Graphics or Higher 

(Recommended XGA or SVGA{min 1024 by 780 pels}) 


• Application User 
* 386 Micro Processor 

- 8 MB RAM 

► 20 MB Hard Drive 

- VGA Graphics or Higher 


Server . 

* At Least 55 MB Hard Drive for Library 
(Recommended 400 M) 





















VisualAge Rollout 


Application Portability - Future Platforms 

- Windows and A1X Next 

- Other Platforms to Foliow as Prioritized by Customer Demand 

• MAC, SUN ; HP, NT 

Additional Features 

- SOM, DSOM 

Future Database and Communications Support 

- Based on Customer Demand 


How to Get Started 

y/ Select Meaningful / Manageable Project 
</ Pick Motivated, Small Team 
y/ Train 
y/ Mentor 

y/ Set Reasonable Target 
y /Scale Up For Next Project 



List Prices 


Summary 


VisualAge Standard $3925 

VisualAge Team $7850 

Add On Features: 

✓ Communications/Transaction $2755 

Component 

✓ Multi-Database Component $1565 

* COBOL Component $2350 

v Multimedia Component $779 


Industrial Strength Power Tool 
y/ Rapid Application Development 
V Extensible, Flexible, Promotes ReUse 
y/ Based on Standards and Open 
>/ Strategic and Tactical 
y/ Integrated - 

► Visual, Team, and Language 

y/ Use Existing Skills while moving to OO 
v Build Skills - 
Developer 
PowerUser 

y/ Increase Productivity 10X or More 

> Means, Faster Dev., Satisfied Users 
- Save Time and MONEY ! 



















0007 


Introduction to the 
SOMohjects Toolkit 

Ira R. Forman 



Object Technology Products 
11400 Burnet Road 
Austin, Texas 78758 



Code Reuse Of Object-Oriented Programming 
DISAPPOINTING 


. Languages have been over emphasized 
. Packaging of libraries has been ignored 



Procedural Library 

Class Library 

Client 

Language 

Client may use any 
language 

Client must use library 
language 

Shipping 

Binaries can be 
shipped 

Source code must be 
shipped 


R0754A.PRS (LAN) 677J/003/IF 


Object Oriented Programming 


The three pillars of 0-0 Programming: 
® Encapsulation 

• Inheritance 

• Polymorphism 


The Promise: 

« Software Reuse 

® Increased Programmer Productivity 
• Ease of Software Maintenance/Extension 


Why the Difference ? 

Binary standards No Binary standards 



One of the many problems SOM solves! 


07/25/9' 





SOM Overview 


SOM is a technology for packaging object-oriented class libraries. 
SOM design goals: 

■ Language Neutral 

- State-of-the-Art Object-Oriented Capability 
• Support for Industrial Strength Class Libraries 


Language Bindings 

What's a Binding? 



R0754A.PRS (LAN) 677J/003/IF 


SOM Compiler 

SOM IDL = COBRA IDL 

+ Encapsulated Implementation Information 

interface dog : <parents>{ 
interface definition> 

#ifdef_SOM IDL_ 

implementation 
implementation information> 

}; 

#endif 

}; 

sc -sxh dog 


C++ usage binding for dog 



SOMobjects Toolkit 2.0 



S OM com piler generates bindings; 

this enhances existing languages, but does not replace them. 
Coming soon: Direct-to-SOM C++ compilers 
Smalltalk bindings 


07/25/9^ 



















A Programming Example 

Definition of a Class 

. Implementation of the interface of an object 
Example of a class 
. The animal class 
What is the animal? 

• an animal eats some kind of food 


R0754A.PRS (LAN) 677J/003/IF 


The SOM Application Development Process 



Defining the class animal 

#include <somobj.idl> 
interface animal: SOMObject { 
attribute string food; 
void print(); 

#ifdef_SOMIDL_ 

implementation { 


releaseorder: _get_food,_set_food, print; 



07/25/9* 









SQM compiler creates a method template file... 


... which you fill In: 


animal.C file 


edited animal.C file: 


#define animal_Class_Source 
#include <animal.xih> 

SOM_Scope void SOMLINK print( animal* somSelf, 

Environment *ev) 

{ 

animalData *somThis = animalGetData(somSelf); 
animalMethodDebug( "animal", "print"); 

} 


#define animal_Class_Source 
#include <animal.xih> 

SOM_Scope void SOMLINK print(animal* somSelf, 

Environment *ev) 

{ 

animalData ’somThis = animalGetData(somSelf); 
animalMethodDebug("animal","print"); 

somPrinti^nammaf food; %$W^aomSalf->^sUooclCavJ);i 


The animal client as a: 


Inheritance (Class Derivation) 


#include "animal, h" 
mainQ 
{ 

animal pooh; 

Environment *ev; 

ev=SOM_CreateLocalEnvironment(); 


#include "animal.xh" 
mainO 
{ 

animal* pooh; 

Environment *ev; 

ev=SOM_CreateLocalEnvironmentO; 


pooh = animalNew(); 

_set_food(pooh,ev,"Honey"); 

_print(pooh, ev); 

SOM_Destroy Local Envi ronment(ev); 
_somFree(pooh); 


program output: 
animal food: Honey 


pooft - new arsmaf 


SOM_DestroyLocalEnvironment(ev); 
delete pooh; 



_get_food 

_set_food 

print 


We have an animal class. Objects of type animal can 

• be assigned a food 

Consider writing a dog class. Objects of type dog can 

• be assigned a food 

• make a noise 

We can derive a new class, dog, from the existing class, animal 


R0754A.PRS (LAN) 677J/003/IF 


07/25/9^ 



Implementation of dog class 


Implementation of dog class (cont.) 


dog.idl: 


#include "animal.idl" 
interface dog : animal { 
string bark(); 
implementation { 
releaseorder: bark; 
override: print; 




dog.C : 

#define dog_Class_Source 
#include <dog.xih> 

SOM_Scope string SOMLINK bark(dog *somSelf,Environment *ev) 

{ 

static string noise = "Unknown Dog Noise"; 

dogMethodDebug("dog","bark"); 

return noise; 

} 


SOM_3cope void SOMLINK print(dog *somSeif,Environment *ev) 

{ 

dogMethoduebug( ,: dog","print"); 

animal ::print{somSelf,@v); 

somPrintffDog says: %s\n",somSelf-> bark(ev)); 

} 


C++ Client Code: 


Polymorphism (Multiple method definitions) 


#include "animal.xh" 

#include "dog.xh" 
main(){ 

animal* pooh; 
dog* snoopie; 

Environment *ev; 

ev = SOM_Create Local Environ ment(); 
pooh = new animal; 
snoopie = new dog; 
pooh->_set_food(ev, "Honey"); 
snoopie->_set_food(ev, "Dog Food"); 
pooh->print(ev); 
snoopie->print{ev); 
SOM_DestroyLocalEnvironment (ev); 
delete pooh; 
delete snoopie; 

} 



program output: 
animal food: Honey 
animal food: Dog Food 
Dog says: Unknown Dog Noise 


» animal defines a food attribute and print() method 
. dog derived from animal, redefines print(), and defines bark() 
» littleDog is derived from dog, redefines bark() 

» bigDog is derived from dog, redefines barkQ 



R0754A.PRS (LAN) 677J/003/IF 


07/25/9' 



bigDog Implementation 


littleDog implementation 


bigDog.idl: 


bigDog.C: 


#include "dog.idl" 
interface bigDog : dog { 
implementation { 
overide: bark; 

}; 

}; 


#define bigDog_Class_Source 
#include <bigDog.xih> 

SOM_Scope string SOMLINK 
bark(bigDog* somSelf, Environment *ev) 
{ 

static string noise="Woof Woof"; 
bigDogMethodDebug("bigDog","bark"); 
return noise; 

} 


littlePog.idl: 


littleDog.C: 


#include "dog.idl" 
interface littlePog : dog { 
implementation { 
override: bark; 



#define littlePog_Ciass_Source 
#include <ldog.xih> 

SOM_Scope string SOMLINK bark(littlePog* somSelf, 

Environment *ev) 

{ 

static string noise = "woof woof"; 
littlePogMethodPebug("littlePog","bark"); 
return nosie; 

} 


Client Code 


#include "animal.xh" 

#include "dog.xh" 

#include "Idog.xh” 

#include "bdog.xh" 

main() 

{ 

animal* pooh; 
dog* snoopie; 
little Dog* toto; 
bigDog* lassie; 

Environment *ev; 

ev = SOM_CreateLocalEnvironment(); 


Client Code (Cont.) 


pooh = new animal; 
snoopie = new dog; 
toto = new littleDog; 
lassie = new bigDog; 

pooh->_set_food(ev, "Honey"); 
snoopie->_set_food(ev, "Dog Food"); 
toto->_set_food(ev, "littleDog Food"); 
lassie->_set_food(ev, "bigDog Food"); 
pooh->print(ev); 
snoopie->print(ev); 
toto->print(ev); 
lassie->print(ev); 



} 



R0754A.PRS (LAN) 677J/003/IF 


07/25/9^ 



Program Output 


animal food Honey 


animal food: Dog Food 

Dog says: Unknown Dog Noise 

animal food: littleDog Food 
Dog says: woof woof 

animal food: bigDog Food 
Dog says: Woof Woof 


SOM Design Goals: 

• Language Neutraf 

• State-of-the-Art Object-Oriented Capability 

• Support for Industrial Strength Class Libraries 

Class libraries built with SOM can be 

• defined and implemented in one language, 

® used from another language. 


The class client can... 

• instantiate objects 

• derive new classes 

• override existing methods 

Even from a non-object-oriented language! 


SOSWS Design Goals: 


• Lanaguage Neutral 

« Support for 1 ndustrial Strength Class Lobraries 

SOM 2.0 Kernel: 

* C and C++ Language Bindings 

♦ Inheritance, Polymorphism, and Encapsulation 

• OMG COBRA IDL + encapsulated implementation information 

* Multiple Inheritance 

• METACLASS PROGRAMMING 

SOMobjects Toolkit: 

. Container Classes 

• Interface Repository 
. Distibuted SOM 

* Persistent SOM 

« Replication Framework 
. Emitter Framework 


SOy Kernel 



R0754A.PRS (LAN) 677J/003/IF 


07/25/9' 






tc. 


07/25/9' 

























SOy Design Goals (Cont.) 


SOM Design Goafs: 

. Language Neutral 

» State-of-the-Art Object-Oriented Capability 
* Support lor luftreittel Strength Cteos Libraries 


Characteristics of industrial grade class libraries: 

• Ship without source code 

• Upward binary compatibility 

• Support shared libraries 



Question: What can I do without recompiling? 


Answer: 


The Goals 



SOM 

C++ 

Add method 

yes 

no 

Add instance 
variable 

yes 

no 

Add new class 

yes 

no 

Migrate method 
upward 

yes 

no 

Migrate parents 
downward 

yes 

no 

Retract private 
instance method 

yes 

no 

Retract private 
instance variables 

yes 

no 

Migrate metaclass 
downward 

yes 

no 


SOM facilitates library evolution 
by supporting all of these transformations 


• Language Neutrality 

• State-of-the-Art Object-Oriented Capability 

• industrial Strength Class Libraries 

are achieved 

Making Reuse A Reality 



R0754A.PRS (LAN) 677J/003/IF 


07/25/9' 












































6000 


Metaclass Programming 

The Next Epoch in the 
Evolution 

of Software Development 

Ira R. Forman 



Object Technology Products 
11400 Burnet Road 
Austin, Texas 78758 


A Different (New?) View 

«, Old Object-Oriented Programming (Wegner 1987) 

OOP = objects + classes + inheritance 
« New Object-Oriented Programming (Forman & Danforth 1993) 
OOP = objects + classes + class operations 
class operations = { 

subclassing (i.e., extension, subalgebra), 
join (i.e., multiple inheritance), 
meet (i.e., insertion of new classes), 
wrapper (i.e., before/after mertaclasses), 

} 


R0834A.PRS(LAN) 677J/003/IF 


Machine language programming 
Assembly language programming 
Procedural language programming 
Structured Programming 
Abstract Data Type programming 
Object-oriented programming 
What's next? 


System Object Model 



07/25/9' 





Metaclass Programming 


Nouns are used to name classes 

The noun describes the set of objects belonging to the class 


Metaclasses change classes by 

• Adding new methods 

• Adding data 

• Changing the set of parent classes 
® Redefining methods 

a Redirecting method through somDispatch 



Specialization is an operation achieved by subclassing 
Knowledge representation is an important goal of OOP. 


Adjectives are used to name metaclasses How A Metaclass Imparts A Property 

Metaclasses are used to capture interesting properties 



R0834A.PRS(LAN) 677J/003/IF 


07/25/94 




Yawn!!! 


What about barking??? 


A BlueDog can also be programmed as follows 



Because multiple inheritance is an operation on classes that creates a new class with the 
union of the methods. 


BUT... 



WOOF 


WOOF 


Barking in not an additional method, 

rather barking is an example of property that is 

wrapped before and after all methods. 


The SOMMBeforeAfter Metaclass 


Usefulness of Before/After Metaclasses 



sommBefor©Method 
somm After Method 


Create your own metaclass 

1. Subclass SOMMBeforeAfter 

2. Override sommBeforeMethod 

3. Override somm After Method 

SOMMBeforeAfter takes care of the dispatching. 



R0834A.PRS(LAN) 677J/003/IF 


07/25/94 



SOM Makes Programming Easier 



interface AtomicDog: Dog { 
implementation { 

metaclass = Atomic; 


Composition of Before/After Metaclasses 



R0834A.PRS(LAN) 677J/003/IF 


Large Class Libraries 


n classes 

p properties 

Dog 

Traced 

Cat 

Persistent 

Whale 

Replicable 


n*2 P 

VS 

n+p 


SOM IDL 

Interface <name>:<parent-list>{ 

<method-declarations> 

#ifdef_SOMIDL_ 

implementation{ 

metaclass=<explicit-metaclass-name>; 

}; 


#endif 























interface FB-1 :Dog 

{ 


SOMMBefqreAfter 


}; 


implementation} 



Technique 3 


interface FB-3:BarkingDog 

{ 


implementation} 

metaclass=Fierce 

}; 



R0834A.PRS(LAN) 677J/003/IF 



The Combined View 



Should each of these method work: Yes 

Should each have the same meaning: Yes 

How: What do FB-1, FB-2, and FB-3 have in common? 


07/25/94 



The Derived Metaclass 


Metaclass Incompatibility 

interface A { (does not occur in SOM) 


void foo() 

somSelf->somGetClass->bar(); 




interface B:A { 

implementation{ 

metaclass = BMeta 




Binary Libraries 



Metaclass incompatibility 


with 

SOM 



Metaclass compatibility 


All have the same Derived Metaclass 



The Metaclass Hierarchy determines the composition 


R0834A.PRS(LAN) 677J/003/IF 


07/25/94 


Despatching 

BeforeAfterDispalch( simpleObject,...) 
BeforMethodDispatch(...) 
dispatch of primaryMethod 
AfterMethodDispatch(...) 


simpleObject,...) 

ifaMSaaassdemT^ BeforeMethod 
call that BeforeMethod 

else 

for all parents of aMetaclass 

call BeforeMethodDispatch( aParent, simpleObject, 


^^^^^^^^^^Metaclass, simpleObject, ... ) 
itaMetacIass aefines AfterMethod 
call that AfterMethod 

else 

for all parents of aMetaclass (in reverse order) 

call AfterMethod Dispatch (aParent, simpleObject,...) 



Conclusion 

Metaclass Programming 
enables the creation of 

new operations on classes that 
factor software in new ways 

Making Reuse A Reality 



R0834A.PRS(LAN) 677J/003/IF 


SOMObJects 2.1 - Metaclass Framework 


SQMCIass 




■MmpffAr* r . i 


attNi 



07/25/94 






































































APPC afWff^ctjOriented 
Programming 


APPC Market Enablement 
Research Triangle Park, NC USA 

Phone: 1 -919-254-4957 

Fax: 1-919-254-6050 

Internet: appcmrkt@vnet.ibm.com 

























































Review of object-oriented principles 


■ How can APPC programmers use object-oriented 
programming techniques? 

■ How can object-oriented programs use APPC? 

= Visual development tooiS 

- System Object Model 


mm 


m 


Encapsulation 



■ Users access object data (instance 
variables) only through procedure calls 
(methods) 

■ Can be done with procedural languages if 
users follow conventions 


& 




Program Behavior = Human Behavior 



■ Humans classify objects to save memory 

■ Programs should exploit this 

- Behave the way human users expect 

- Perhaps achieve some coding economies 

(Q IBM toparaltan 1994 


Class Hierarchy and Inheritance 



(C) EM OcrpanStcJi 1S34 












Example: AFTP and NameServer APIs 


AFTP 

- aftp_create(), aftp_destroy() 

- aftp_set_destination() 

“ aftp_set_mode_name() 

- aftp_send_file(), aftp_receive_file() 

- aftp_set_local_traceJevel 

- aftp_show_error() 

APPC Name Server 

- aname_create(), aname_destroy() 

- aname_set_destination() 

- aname_query(), aname_receive() 

- aname_register() 

- aname_set_trace_level 

- aname_format_error() 


(C) (BU Corpardlan 15S4 


■ cpicinit 

■ cpicerr 
« cpicobj 

■ aftp 

« aname 

■ TransactionProgram 

- Send 

- SendAndConfirm 

- Converse 




Example: AFTP and Name Server as 
Subclasses of CPIC_Program 


* CPIC_Program 

- C_create(), C__destroy() 

- C_set_destination() 

- C_set_mode_name(), C_get_mode_name() 

- C_set_locaLtraceJevel() 

- C_show_error() 

- C_xxxxx 

■ AFTP subclass of CPIC_Program 

- C_aftp_send_file(), aftp_receive_file() 

- C_set_local_trace_level() << override 

- C_aftp_xxxxx 

■ APPC_Name_Server subclass of CPIC_Program 

- C_aname_query(), aname_receive() 

- C_aname_register() 

- C_aname_xxxxx 



(qeWOBparafcnira 










What Are the Benefits? 

Encapsulation 

- Programmer's can't manipulate data structures directly 

- Saves maintenance 

Inheritance 

- New programs (subclasses) inherit common code from 
parent class 

- Saves coding time 

Polymorphism 

- Each class may override some methods (printstring) but 
programmers only learn one method name 

- Saves programmer training time 


w Strategies for Using APPC in 
^ Object-Oriented Applications 

<» Provide C++, Smalltalk classes for CPI-C (known as a 
wrapper) 

- Small amount of effort 

- Great for existing APPC TPs 

■ Conversational abstractions such as dialog or cpicobj 

- Easier for ncn-APPG programmers to use 
— Less control 

~ Great for new TPs where server TP Is new 

- Distributed objects 

- Transparent to programmers 

- Generally not interoperable 




* Smalltalk-based visual application builder 

■ APPC support 

- APPC API classes 

- APPCConnectionSpec object contains partner information 

- APPCConversation object is handle to conversation 

- Higher-level abstractions called dialogs 

■ Supports "foreign" records (C, Cobol) 










Important VisualAge APPC Classes 


Hello, World’ in VisualAge 


Object 

AfotAPPCR©su!t answers false to isAbtError 

AbtAPPCReception 
AbtError 

AbtCommunicationsError 
AbtAPPCError answers true to isAbtError 

AbtObservableObject 
AbtPart 

AbtAPPCConfiguration displays active SNA config 

AbtCommunicationsConnection 
AbtAPPCConvorsatson 
AbtConnectionSpec 
AbtAPPCCon noctionSpec 
AbtTypeField 
AbtRecord 
AbtDialog 

AbtMultiReceiveDialog 

AbtMultiReceiveDialog initialize: anAbtRecorcj ls a one-line TP 


(C) HM Corporate! 1S34 A X X-XWX" 


mm 


helloWorld 

"Sample program - sends 'Hello, World!' to partner" 

| connectionSpec conversation result | 

“Define partner LU and TP name" 
connectionSpec := AbtAPPCConnectionSpec new 
fqPartnerLUName: 'USIBMNR.NR5183DI'; 
partnerTPName: 'HELLOD'. 

"Initialize and allocate conversation" 
conversation := AbtAPPCConversation new 
connectUsing: connectionSpec. 

"Send character string to remote system" 
result := conversation sendString: 'Hello, world!'. 

"terminate conversation and TP" 
result := conversation disconnect. 



w Strategies for Using APPC with Distributed 
Logic 


IBM System Object Model - SOM 


Think of local object as a cache 

- "Write-through" or "lazy-write" is design choice 

- "Read-through" or "read-ahead" 

Simplify conversion by converting data to character 
strings where possible 

For visual application tools, use record-mapping 
objects 


Interface Definition Language (1DL) and compiler 
Language neutral objects 

- "Client" object and "server" object can be in different 
languages 

- C and C++ today 

- Other languages added easily (Cobol, OOCobol) 

True object-oriented programming for procedural 
languages 

Client and server objects are local (same process) 





(CJEWCcrpa^knim 











SOM Interface Definition Language (SDL) 
Compiler 



C++ Car "Server" (APPC Client) 


#ddine Car_Class_Source 
#indude <carjtih> 

SOWLScope void SOMLINK initFromVIN( 

Car ‘'somSoif, Environment *ev, string vin) 

{ 

CarData *somThis = GarGetData(somSetf); 
CarMethodDofaufl( , 'Car i a initFromVIN B ); 

r si! the CPbC ©all# g© cmlnlt, 

4 email©, ems*rad(vin), emrcrv(data), 

* csitd@ei 

* Received data has model, etc. 

7 

strm^Jv (model, date, 20); 
r other string copies for initialization 7 


Car object "server" program 
(APPC client TP) 



aCar object 


C++ Car "Client" 


tindude <car jch> 

iirrt main(int argc, char *argvQ) 

{ 

aCar = new Car; 
aCar->in'rtFrornWlN( 

somGetGlofoalEnvironmentO, 

”DXY43JK1O09O n ); 
makeModel = aCar->_get_modelO; 
aCar->somFr 0 eO; 

return (0); 

j #include <som.idt> 

: interface Car: SOMObjed 

j { 

; void inrtFromVIN(in string vin); 

I attribute string model; 


Client program 



aCar object 
IDL 


mm 


(C) BW Corpcratan 1S54 


k 


w- 


Using SOM Objects with APPC 


« Same techniques as before - local object is cache for 
remote data 

« Get used to SOM compiler, IDL 

» Get used to writing "server" programs as DLLs (OS/2) 
or shared library (AIX) 































Server 



Distributed Objects - Software Industry View 


■ Object Management Group 

- Common Object Request Broker Architecture (CORBA) 

“ RFP for interoperability 

- RFP for Transaction Service 
- IBM 

- SOMObjects Toolkit 

► Includes Distributed System Object Model (DSOM) 

► CORBA-compliant 

~ OS/2, AIX (10/93); Windows (ann. 5/94) 

* Taligent (Apple, IBM, HP) 

« Component Integration Lab 

- Companies: Apple, IBM, Novell, Oracle, Sun, Taligent, WordPerfect, 
Xerox 

- Technologies: SOM, Bento (Apple object storage), Open Scripting 
Architecture (Xerox), OpenDoc 


* Both client and server use object-oriented model 

■ Client treats remote objects as local (sort of like GIGS 
function-shipping or RPC) 

* ORB runtime performs communication calls 

■ ORB runtime performs data conversion, or 
"marshaling, unmarshaling" 



Object-oriented principles can simplify writing APPC 
programs 

Distributing logic allows 0-0 programs to access 
non-OO data 

0-0 visual programming tools include powerful data 
conversion tools in addition to APPC 

Distributed objects have response times of other 
distributed applications - beware 

















Ware® 


SOM: 

Re-usable Class Libraries 
in Large Programs 


Tom Pennell© 
MetaWare Incorporated 
2161 Delaware Avenue 
Santa Cruz, CA 95060-5706 
Phone: 408-429-6382 
FAX: 408-429-9273 



















Client 

Code 


C, Pascal, C++, 
Fortran, ASM... 

EXTREME EXAMPLE: 

OS/2 2.0 Runs 16-Bit OS/2 A 

What Makes Procedure Li 
Work? 

Procedure Calling conventioi 


Simple 





























How? 

• External object representation is simple 
and can be standardized 



If You Don't (Have to) Change Your Source 
Code, You Don't Have to Recompile! 





















Add function 

DATA FUNCTIONS to A 
A i j £ f2 

B k g h 

ap*=e-| I | 

0 
1 
2 

0 bp -> k = 23 

2 mov eax, bp 
mov 12 [eax!, 23 

2 

3 

4 16 

ap -> f (123) mov eax, ap 

= a P "> CU (ap, 123) pash 123; push eax 

mov ebx, 8 [eax] 
call 4 [ebx] 

bp -> h (456) mov eax, bp 

= bp ->. wp [4] (bp, 456) pash 456; pash eax 

mov ebx, 8 [eax] 
call 16 [ebx] 



DATA FUNCTIONS Add data to A, 
A . . - function to 6 

A i | J2 £ 

B k g g2 h 




We added a function to A that B 
didn't care about , and broke calls 
to B'$ functions . 


Broke calls to A and B! 











MetaWare, Tom Pennello, Page 10 

Conclusion: 

• Typical C++ Object Model 

3 

© Tight Binary Coupling Between Class 
Definition and Client Code 

3 

@ No Binary Compatibility 

3 

© Hindrance to Software Development 

SOM - 

© An Object Model Without This Coupling 
(Achieved Via Indirection) 


Let's See How... 










DATA FUNCS 
A i | £ 

B k g h 


AMT A INFO 


ap=^- 

4 


B MT B INFO 


DOFF - 
8 
h 




offset to data 
in object 

offset to f in 
A MT 


offset to data 

offset to g in 
B MT 

offset to h in 
B MT 


• For each object, location 0 Points to MT 


m MT = Method Table 

— Contains all methods, whether introduced or derived 

• Info Table 

— Contains offset to introduced data in object 
— Contains offset in MT for each introduced function 


One 
MT per 
class 


One 
Into 
Table 
per class 


Add functions => append to info table 
Add data change offset in info table 
Indirection buys binary isolation 



add ecx, 12 [Binfo] 
call [ecx] 



























MetaWare, Tom Pennello, Page 13 

DATA FUNCTIONS Add function 


A i | f £2 

B k eh 

A MT 



ap -> f (123) 




to 


A INFO 



iiill 


in object 

4 i offset to £ in 

__ A MT 

8 £2 offset to f2 

in A MT 


s 





c 








































offset to f 
A MX 















































MetaWare, Tom PenneSIo, Page 18 

include <somobj.sc> 

class: 

Student: 

"Student" class provides a base class to generate more 
specialized students like "GraduateStudent" and 
"UnderGraduateStudent" 

parent: 

SOMObject 

data: 

char id[16]; 

char name [32]; 

methods: 

void setUpStudent(char *id, char *name); 

-sets up new a new student. 

void printStudentInfo ( ); 

-prints the student information. 

char *getStudentType ( ); 

-returns the student type. 

char *getStudentId( ); 

-returns the student id. 


/* student id */ 
/* student id */ 


Figure 1. Class Definition File: <student.csc> 









I MetaWare, Tom Pennello, Page 19 

idefine Student_Class_Source 
#include "'student. ih' e 

static void setUpStudent(Student *somSelf, char *id, char *name 
{ 

StudentData *somThis = StudentGetData(somSelf); 
strcpy(_id, id); 
strcpy(_name, name); 

} 

static void printStudentInfo(Student *somSelf) 

{ 


StudentData 

*somThis = 

StudentGetData(somSelf); 

printf (" 

Id 

: %s \n", _id); 

printf(" 

Name 

; %s \n", _name); 

printf(" 

Type 

i %s \n", _getStudentType(somSelf)) 


} 

static char *getStudentType(Student *somSelf) 

( 

StudentData *somThis = StudentGetData(somSelf); 
static char *type = "student"; 
return (type); 

} 

static char *getStudentId (Student *somSelf) 

{ 

StudentData *somThis = StudentGetData(somSelf); 
return (_id); 

} 


Figure 2. Class Method Implementation File: <student.c> 


MetaWare, Tom Pennello, Page 20 


student c esc This is the class definition file, as described 

earlier. 

student. sc This is a subset of the class definition file. It 

includes all public information from the oC@c 
file, including comments on public elements. For 
the student example, student. sc would 
include everything from student .esc except 
the data section. This file is created by the SOM 
compiler, and although human readable, should 
not be edited, as it will be regenerated whenever 
changes are made to the . esc file. 

student „h This is a valid C header file which contains 

macros necessary to invoke public methods and 
access public data elements of the class. Tills file 
will be included in any client of the class. This 
file is created by the SOM compiler, and is 
normally read only by programmers who need to 
know how method resolution is implemented. 
This file should not be edited. 

student . ih Similar to student .h, but contains additional 

information needed for implementing methods. 
This is the implementor's version of the .h file, 
and must be included in the class methods 
implementation file. This file is created by the 
SOM compiler and should not be edited. 

student Contains the method implementations. This is 

initially creeated by the SOM compiler and then 
updated by the class implementor. 


Table 1. Student Class Files 





MetaWare, Tom Pennello, Page 21 

include <student.sc> 
class i 

GraduateStudent; 

parent: 

Student 

data; 
char 
char 

methods; 

override printStudentInfo; 
override getStudentType; 
void setUpGraduateStudent( 

char *id, char *name, char *thesis, char *degree); 


thesis[128j; /* thesis title */ 

degree[16]; /* graduate degree type */ 


Figure 4. Class Definition File:<graduate.csc> 


MetaWare, Tom Pennello, Page 22 

#define Graduatestudent_Class_Source 
#include "graduate„ih" 

static void printStudentInfo(GraduateStudent *somSelf) 

{ 

GraduateStudentData *somThis = GraduateStudentGetData(somSelf) 

parent_printStudentInfo(somSelf); 

printf (" Thesis : %s \n", thesis); 

printf(" Degree : %s \n"._degree); 

} 

static char *getStudentType(GraduateStudent *somSelf) 

( 

static char *type = "Graduate"; 
return (type); 

} 

static void setUpGraduateStudent(GraduateStudent *somSelf, 
char *id # char *name, char *thesis, char ^degree) 

{ 

GraduateStudentData *somThis = GraduateStudentGetData(somSelf) 
_setUpStudent(somSelf,id,name); 
strcpy (_thesis, thesis); 
strcpy(_degree, degree); 

) 


Figure 5. Class Method Implementation File: <graduale.c> 



MetaWare, Tom Pennello, Page 23 

linclude "graduate.h" 

main () 

{ 

Student *studentl = StudentNew(); 

Student *student2 = StudentNew(); 

GraduateStudent *gradl = GraduateStudentNew(); 
GraduateStudent *grad2 = GraduateStudentNew(); 

_setUpStudent(studentl,"120455","Joe Doe")/ 
_setUpStudent(student2,"103606","Mary Smith"); 
_setUpGraduateStudent (gradl,"203230","Janet Brown", 
"Parser Generators", "M.S.”); 
_setUpGraduateStudent (grad2,"240900","Mark Black", 
"Code Optimization", "Ph.D.") 

_printStudentInfo(studentl); 

_jprint Student Info (student2) ; 

_printStudentInfo(gradl); 

_printStudentInfo(grad2); 

} 


MetaWare, Tom Pennello, Page 24 


The output from this program is: 


Id 

: 120455 

Name 

: Joe Doe 

Type 

i student 

Id 

: 103606 

Name 

: Mary Smith 

Type 

: student 

Id 

: 203230 

Name 

: Janet Brown 

Type 

: Graduate 

Thesis 

: Parser Generators 

Degree 

: M.S. 

Id 

: 240900 

Name 

: Mark Black 

Type 

: Graduate 

Thesis 

: Code Optimization 

Degree 

: Ph.D. 


allocation: a *&p = n©w a,- 

— malice {siseof A); 


it what is sizeof A ? 

SOM object size varies as object implementation 
vanes - binary independence means sizeof can't 
be compiled into code. 



MetaWare, Tom Pennetlo, Page 26 


Every object is of some class. 


Every class has a class-object holding data about the 
class and having useful methods on the class. 


Thus, classes are dynamic, run-time objects. 


Examples of methods: 


CLASSICS J -> 


GETJNAME 

( ) 

G E T_P ARENT [S] 

C ) 

GETJSIZE 

« ) 

SUPPORTS_METBOD 

("foo") 

NEW 

« ) 


Dynamic type info: 

ANY_OBJECT -> GET_CLASS { ) 


Returns class object for anyjobject 
representing any_object's type. 

printf ("type of obj is %s \n", 

ANY__OBJECT ~> GET_CLASS ( ) -> GET NAME ( ) ) ; 













I MetaWare, Tom Pennello, Page 28 

Meta-Class Derivation SOM class 



aob j -> gefc^class ( ) -> gefc__cnfc ( ) ) ; 

I_! 

Method added to meta-class 


Because SOM classes are objects, you can extend 
the functionality of classes (types) via derivation! 






















a -> construct ( ) ; 


Implicitly, compiler rewrites 


MetaWare, Tom Pennell©, Page 30 


"But wait - C++ is so efficient!" 


• Weigh cost of method call vs. work in 
method. 

© Use C++ for internal implementation of a 
particular class. 

© Few C++ compilers get this "efficient" 
implementation right. 

(VIRTUAL BASES AND CONSTRUCTORS) 

SPACE - 

• SOM: 4 bytes / object +MT, info, & class 
object / type 

© C++: 4 bytes / object - vfuncptr 

+ (4 bytes / obi) x (virtual bases) 

+ constructor displacement values 


As soon as you have virtual functions, SOM is 
no worse; when you have virtual bases, SOM 
wins. 






MetaWare, Tom Penneiio, Page 31 

Frontiers of SOM 

• Multiple Inheritance 

• CORBAIDL 

• More Bindings (C++, Pascal, CLOS, OREXX) 

• Persistence Mix-in 

• DirectToSOM Support for C++ 


MetaWare, Tom Penneiio, Page 32 


Objects vs. RPCs 














PenneMo, Page 34 
A 

BD,: 12CD,: 12 

\ / 

D 


SI THIJNK: 

CDj: mov eax, o [esp] 
add eax, 12 
ret 



WRONG! -for a D 





































OS/2 Developer, Winter 1992 


i m m&m nmz* rrraijtf i 


OS/2 Developer^ Spring 1992 

IBM’s OS/2 2.0 Technical Library 

System Object Model Guide and Reference Version 2.0 

4 *SOM Enchanted Evening” 

Computer Language Supplement^ April 1993 

e SOM in 














UJ 


char id[16], name[32]; 


pragma SOM_release_order( 

student(char*,char*), printStudentlnfo, 
getStudentType , getStudentId, 
operator =); 

}; 












MetaWare/Pennello//DirectToS0M 3 page 38 


stu.hh, continued: 


struct graduatestudent:student { 

graduatestudent(char *id, char *name, 
char *thesis, char *degree) 

: student(id,name) { 
strcpy(this->thesis,thesis) ; 
strcpy(this->degree,degree) ; 

} 

graduatestudent(){} // For language bindings. 

virtual void printStudentlnfo(); 
protected: 

char thesis [128], degree[16] ; 

pragma SOM_release_order( 

graduatestudent(char*,char*,char*,char*) , 
operator =); 


DirectToSOM C++ IMPLEMENTATION 
(of those function bodies not inline) 

stu.cpp: 

#include "stu.hh" 

void student::printStudentInfo() { 

printf(" Id : %s \n",id); 

printf(" Name : %s \n",name); 

printf(" Type : %s \n",getStudentType()); 

} 

void graduatestudent::printStudentlnfo() { 
student::printStudentlnfo() ; 
printf(" Thesis : %s \n",thesis); 
printf(" Degree : %s \n",degree); 

} 


pragma pop(som_bindings)/ pragma pop(som_inline); 



DirectToSOM C++ CLIENT 


stut.cpp: // Test. 

#include "atu.hh" 


main () { 

student studentl("120455","John Doe"); 
student student2("103606","Mary Smith"); 

graduatestudent gradl 

("203230","Janet Brown", 

"Parser Generators","M.S"); 
graduatestudent grad2 

("240900","Mark Black", 

"Code Optimization","Ph.D"); 

studentl.printStudentlnfo(); 
student2.printStudentInfo() ; 
gradl.printStudentInfo() ; 
grad2.printStudentlnfo() ; 

} 


MetaWare/Pennello//DirectToSOM, page 39 


XDL OUTPUT FROM HC COMPILER 

stu.id!: 

#include <somobj*idl> 
interface student : SOMObject { 

void ct fpctl(inout somlnitCtrl ctrl, 
inout char id,inout char name); 
void printStudentlnfo() ; 
char * getStudentType() ; 
char * getStudentld{) ; 

student * dts__as__frx7student 

(in student dts_dummy 1) ; 

#ifdef SOMIDL_ 

implementation { 
char id[16]; 
char name[32]; 
callstyle—oidl ; 
dtsclass; 
majorversion = 0; 
minorversion = 0; 

somDefaultConstCopylnit: public, override, init, 

cxxdecl="student(const student & dummy);"; 

ct___fpctl: public, init, 

cxxdecl="student(char * id,char * name);"; 
printStudentlnfo: public, 

cxxdecl="void printStudentlnfo(void);"; 
getStudentType: public, 

cxxdecl="char * getStudentType(void);"; 
getStudentld: public, 

cxxdecl="char * getStudentld(void);"; 
id: protected, align=l, 

cxxdecl="char id[16];"; 
name: protected, 

cxxdecl="char name [32 ] ; ; 

dts_as_frxTstudent: public, nonstatic; 

somDefaultConstAssign: public, override; 

releaseorder : ct_fpctl, printStudentlnfo, 

getStudentType, getStudentld, 
dts_as_f rx7 student, id, name; 

}; 

#endif 

}; 




MetaWare/Pennello//DirectToSOM, page 40 


IDL OUTPUT FROM HC COMPILER, cont'd. 


stu„idl: 


USE OF C LANGUAGE BINDINGS 


interface graduat©student : student { 

void ct_fpcn31(inout somlnitCtrl Ctrl, 

inout char id,inout char name, 
inout char thesis,inout char degree); 

graduatestudent * dts as_frxlSgraduatestudent 

(in graduatestudent dts___dummy2) ; 

#ifde£ SOMJDh ~ 

implementation { 

char thesis[128]; 
char degree[16]; 
callstyle=oidl; 
dtsclass; 
majorversion = 0; 
minorversion = 0; 
thesis: public, 

cxxdecl="char thesis[128]; n ; 
degree: public, 

cxxdecl="char degree[16];"; 
somDefaultConstCopylnit: public, override, init, 

cxxdecl="graduatestudent(const graduatestudent & du 
ct fpcn31: public, init, 

cxxdecl="graduatestudent(char * id,char * name,char * 
printStudentlnfo: public, override, 

cxxdecl="void printStudentlnfo(void); 

dts__as frxlSgraduatestudent: public, nonstatic; 

somDefaultConstAssign: public, override; 

releaseorder : ct__fpcn31, 

dts as_frxlSgraduatestudent, 

thesis, degree; 

}; 

#©ndif 

}; 


stut2.c: 

#include "stu.h" 
main () { 

student *studentl = studentNew{); 
student *student2 = studentNew(); 
graduatestudent *gradl = graduatestudentNew (); 
graduatestudent *grad2 = graduatestudentNew (); 

_ct_fpctl(studentl,0,"120455","John Doe"); 

_ct_fpctl(student2,0,"103606","Mary Smith"); 

_ct_fpcn31(gradl, 0, 

"203230", "Janet Brown", 

"Parser Generators ","M.S"); 

_ct_fpcn31(grad2, 0, 

"240900","Mark Black", 

"Code Optimization","Ph.D"); 

_printStudentInfo(studentl) ; 

_printStudentInfo(student2) ; 

_jprint Student Info (gradl) ; 

_j?rint Student Info (grad2) ; 

} 



USE OF C++ LANGUAGE BINDINGS 


stut3o cpp: 

#include "stu 0 xh" 
main () { 

student * student1 = 

new student( ”120455" , "John Doe"); 
student *student2 = 

new student("103606","Mary Smith"); 

graduatestudent *gradl = new graduatestudent 
("203230", "Janet Brown", 

"Parser Generators", "M„S"); 
graduatestudent *grad2 = new graduatestudent 
("240900","Mark Black", 

"Code Optimization","PhoD"); 

studentl-“>printStudentInf o () ; 
student2“>printStudentInfo(); 
gradl“>printStudent!n£o() ; 
grad2~>printStudentInfo() ; 

} 


MetaWare/Pennello//DirectToSOM, page 41 


INVALID USE OF C++ LANGUAGE BINDINGS 
(misuse undetected at compile-time) 

stut4 o cpp: 

// This program compiles but bombs with C++ 

// language bindings: 

#include "stu.xh" 

main () { 

student studentl("120455","John Doe"); // 1 
studentl*printStudentlnfo(); // 2 

} 

At // 1, an unwitting C++ compiler allocates just 4 
bytes, not the appropriate amount of data. 


So 1/2 bombs. 



COMMANDS FOR DTS C++ AND BINDINGS 

Implementor: 

he stu.epp -c // Compile implementation 

For bindings (optional): 

he stu.h -Bidigen -Hcppext=h -c > stu.idl 

sc ~sh -Einoqualifytypes -maddstar stu.idl 
// C bindings: stu.h 

sc -sxh -mnoqualifytypes -maddstar stu.idl 
// C++ bindings: stu.xh 

Clients: 

DTS C++: 

he stut.epp -c // Compile test C++ client 

he stut stu “Bsom // Link with sonulib. 


stut 


// Produces output 


MetaWare/Pennello/VDirectToSOM, page 42 

COMMANDS FOR DTS C++ AND BINDINGS, contM. 

C bindings: 
he stut2.epp -c 
he stut2 stu -Hsom 
stut2 

C++ bindings: 
he stutB.cpp -c 
he stut3 stu “Hsom 
stut3 

Remember: 


// Compile C test program 
// Link with som.lib. 

// Produces (equivalent) output 


// Compile C test program 
// Link with som.lib,, 

// Produces (equivalent) output 


C++ language bindings 
ARE NOT THE SAME AS 
DirectToSOM C++. 



SUBCLASSING THE WORKPLACE SHELL 
PALETTE CLASS WITH DTS 

#include <cs2.h> 

#include <som.hh> 

#include "wppalet.hh" 

{{include "wpclrpal.hh" 

// Class names are as they appear. 

#pragma off(Case_insensitive_class_names); 

// Don't generate your own asnop/ctor/dtor; 
// inherit them from SOM. 

{{pragma on (SOMOb ject_as signment_operators) ; 
{{pragma on(SOMObject_constructors); 
fpragma on(SOMObject_destructor); 

// Force definition of the classes 
// because there are no out-of-line methods: 
{{pragma on(som_define_class) 


MetaWare/Pennello//DirectToSOM, page 43 


// Define palette MetaClass 

class M__MyPalette : public M_WPColorPalette { 
virtual ULONG wpclsQueryDefaultView() { 

return OPEN_PALETTE; 

} 

virtual PSZ wpclsQuervTitle() { 

return "Kevin's Palette"; 

I 

virtual ULONG wpclsQueryStyle() { 

return 

// Call base class method in metaclass. 
M WPColorPalette::wpclsQueryStyle() 

| CLSSTYLE_NEVERTEMPLATE; 

} 

#pragma SOM_version(1,2); 

1 ; 

class MyPalette : public WPColorPalette { 
ipragma SOM_metaclass(M_MyPalette); 

#pragma SOM_version(1,2); 

}; 

PALETTE.DEF 

LIBRARY palette 
EXPORTS 

M_MyPaletteClassData ; Palette.OBJ 

M_MyPaletteCClassData ; Palette.OBJ 

MyPaletteClassData ; Palette.OBJ 

MyPaletteCClassData ; Palette.OBJ 

MyPaletteNewClass ; Palette.OBJ 

M_MyPaletteNewClass ; Palette.OBJ 

(automatically generated; these are the names 
exported from palette.obj) 



MetaWare/Pennello//DirectToSOM, page 44 


KEXX SCRIPT TO REGISTER CLASS ON THE DESKTOP 
palette.cmd: 

call RxFuncAdd "SysLoadFuncs","RexxUtil", 
"SysLoadFuncs" 
call SysLoadFuncs 

/* class, module */ 

if SysRegisterObjectClass( "MyPalette" , 

"palette" ); 

then say 'Class registered.' 
else 

say 'Class registion failed.' 

class = "MyPalette" 
title = "My Palette" 
location = "<WP__DESKTOP>" 

setup = "OBJECTID=<MYFOLD>" 
replace = 'REPLACE' 

rc = SysCreateObject( class, title, 
location, setup, replace ); 
if rc then 

say "Object Created" 
else 
do 

say rc; 

call SysDeregisterObjectClass( "MyPalette" ); 

say "Class deregistered" 

end 


REXX SCRIPT TO DEREGISTER CLASS ON THE DESKTOP 
dpalette.cmd: 

call RxFuncAdd "SysLoadFuncs", 

"RexxUtil","SysLoadFuncs" 
call SysLoadFuncs 

class = "MyPalette" 
title = "My Palette" 
location = "<WP_DESKTOP>" 

setup = "OBJECTID=<MYFOLD>" 
replace = 'REPLACE' 

do 

call SysDeregisterObjectClass( "MyPalette" ); 

say "Class deregistered" 

end 



COMMANDS FOR TESTING PALETTE 


he -c palette„cpp // Compile new class. 

he -HIdopt—/stack:16384 -Hsom -Hdll -Hdef palette.obj 

// Link, produce DLL. 

copy palette.dll ..\libtest 

// Put DLL someplace 
// in your LIBPATH 

palette // Register class 

// on the desktop 

< NOW USE THE PALETTE! ! ! > 

dpalette // Deregister class,. 

// (then delete the object 
// with the mouse) 


MetaWare/Pennello//DirectToSOM, page 45 


Where DirectToSOM C++ differs from C++ 

- sizeof(expression) or sizeof(type) not a constant 

- No { initializers }: 

struct s : SOMObject { int x; }; 

s x = {1}; // Error * 

~ NO MULTIPLE OCCURRENCES OF THE SAME NON-VIRTUAL 
BASE (all bases in SOM are virtual): 

A A 

I I 

B C // Compiler generates 

\ / // warning. 

D 

You really wrote: 

A 

/ \ 

B C 

\ / 

D 

- obj„x = obj D y = 1 fails if x and y are attributes 



SURPRISES 


~ Calls to new/delete: 

somtype x; // If global, calls new 

struct cpp class { 

somtype x; // cpp^class ctor calls new 

>; 

- Non-link time constants: 

struct somtype { 
protected: 
int member; 

} ; 

// Generates RT code: 

int somtype: : *memptr = &somtype: :member; 

- All static data and static member functions must be 
defined, ©van if never called. 


MetaWare/PenneXlo//DirectToSOM, page 46 


Release-to-release binary compatibility (RKBC) 

New releases of binary class libraries: 

- Must support prior interfaces & semantics 

- May offer additional features and improved 
performance 


You can add: You can delete: 

member functions, private member 

constructors, destructors functions 

member data private member data 


base classes 


private base classes 


You can change: 

member function from non-virtual to virtual 



MetaWare/Pennello//DirectToSOM, page 47 


Mechanics: 

- add new functions,- constructors,- destructors 

to end of SOM^release^order. 

- add new data to END of public/protected sections 

- do anything you want with private data! 

Issues: 

- support inlining/macros forever 

struct s { void £() { g () ; h () ; } }; 

#define STUFF (x) x.f () 

Changing the inline functions/macros doesn't 
affect old pgms! 

- templates - glorified macros 


- overloading -- a new "more-specific" operator won't 
be called by old code until recompiled: 


struct s { 

void f(float); 

void f(int); 

>; 

// Client: 

... f(2.3) 

// f(float) called 


struct s { 

void f(float); 
void f(double); 
void f(int); 

} ; 

// Client: 

. . . f(2.3) 

// f(double) called 
// WHEN RECOMPILED 


Unrecompiled clients call old versions 
— is this OK for your class? 


Summary: make disciplined use of C++ features! 
Plan for future RRBC! 


No change propagates to old binaries 



MetaWare/Pennello//DirectToSOM, page 48 


Some PRAGMAS/TOGGLES 


Some PRAGMAS/TOGGLES, cont'd 


// Say that the following classes are SOM: 
pragma On(SOM_bindings); 

pragma Pop(SOMJbindings); // Back to previous. 

// Specify the ordering of your methods: 
pragma SOM_release_order(list of functions); 

// Do not mangle method/data names : 
pragma SomNoMangling(On); // No mangling 

pragma SomNoMangling (Pop) ; 

// Compiler prints your release order! 
pragma on(print^som); 

// Don't inline SOM methods 
pragma off(sonajLnline); 

// Specify data attributes for data access 
// (__get_x and __set_x methods) 
pragma SOM^attribute(xl, ... xn) 
pragma SOM_attribute(xl, ... xn; 

ml , m2, c o. mk) 

// Version control/checking: 

pragma SOM_version (major, minor) 

pragma SOM^version(classname; major,minor) 


// Specify a metaclass: 
pragma SOMjnetaclass(this,that); 
pragma SOM_metaclass(that); 

// IDL callstyle gets you 
// an "environment" parameter: 
pragma SOM_callstyle(this,IDL); // or OIDL. 

pragma SOM_callstyle(IDL); // or OIDL. 

// Inherit default constructor, destructor, 

// and assignment from SOMObject, to save code, 
// or for use in WPS (legacy classes): 
pragma on (SOMOb ject__assignment_operators) ; 
pragma on(SOMObject_constructors); 
pragma on(SOMObject^destructor); 

// Force definition of this class if it has no 
// "seat" the compiler can identify to lay down 
// NewClass: 

pragma on(som define class); 



LIMITATIONS IN C++ LANGUAGE BINDINGS 
(non-DirectToSOM) 

YOU CANNOT: 

- somtypa x; // Use new« 

- somtypa a[10]; // new somtype[10] doesn't 

// work either. 

- x.member; // No direct member access. 

// DTS allows AND OPTIMIZES 

- void f(somtype); // No passing by value 

- somtype g(); //No return by value 

- Hava objects as members of classes 

- Write operator new/delete. 

YOU MUST 

- Understand and use IDL to describe classes 


MetaWare/Pennello//DirectToS0M 5 page 49 



Microsoft Component Object Model (COM) 

- An object is the sum of its interfaces 

- Object-based, not object-oriented 
=> no implementation inheritance 

+-+ 

j *-j-> vPrint 

+—---~+ 

j *-| ——> vGraph 

+-—+ 

| *--j-—> vDump 

+--•-+ 

S data I 

| for object j 

-j-•—}- 

Virtual function table 

+- j- 

vPrint: j addref | first 

+—..-+ three 

1 release | entries 

4 - .j. "inherited" from 

I queryI | IUnknown 

+--f 

j spool I methods for 

+-+ interface 

I unspool | Print 

+ - + 

I ... I 

+-+ 


oPrint: 
©Graph: 
oDump: 


vGraph, vDump similar. 


MetaWare/Pennello//SOM vs. COM, page 50 


- usage: Ask about an interface; 

if supported, call method in it. 

IUnknown *p = ... get an object from 

somewhere ...; 

Print *oPrint; 

p->QueryInterface(IPrint,fioPrint); 
if (oPrint != 0) 

IS Object supports Print interface. 
oPrint->spool (); 

Graph *oGraph; 

p->QueryInterface(IGraph,fioGraph); 
if (oGraph != 0) 

oGraph->draw(); 

- No direct access to data 

- Object representation quite simple 










Inheritance? 


Existing: Student type 

I want: GraduateStudent type 

GraduateStudent 
+—-- 

oGS : 1 *-•-• I-> vStudent^G 

+--■--+ 

i *-1—+ 

+—--+ i 

1 data | | 

| for grad | j 

+-+ I 

V 

vStudentjG: Student 

+-f HI---+ 

| 3 | | *-j->vStudent 

| standards j +-+ 

+-h | data | 

1 | ! for sdnt j 


4 -—-}* 

| getType j->void GraduateStudent::getType() 

+---+ { return "grad"; } 

| print |-M- 

+-+ I 

V 

•void GraduateStudent:: print () { 

this->oStudent->print() ; 
print my own stuff; 

} 


MetaWare/Pennello//SOM vs. COM, page 51 


- Embed a (data pointer to a) student 

- Implement a separate Student method table with a 
replacement for print. 

- But this DOESN'T WORK RIGHT! 

void studentprint() { 

printf(" Id : %s \n",id); 

printf(" Name : %s \n",name); 

printf(" Type : %s \n",getStudentType()); 

} I I I I I I I I I I I I I I I 

// Always prints "student", never "grad". 

Basic problem: methods in base classes don't 
"call up". 

This is NOT INHERITANCE. This is "front-ending". 

How to do inheritance? Complicated, plus Student 
must be programmed specially to allow it. 

- Add a new method? writ© a new interface. 

- Use of different interfaces requires maintenance of 
different pointer values. 













MetaWare/Pennello//SOM vs. COM, page 52 


Microsoft's point of view: 

- Small objects: use implementation inheritance, see 
all source coda. 

- Large objects: interact as "components", not in an 
QO fashion. 

So: OO is not appropriate for component 
communication, only for programming-in-the-small. 

- OLE: a collection of 60+ COM interfaces: 
a component connection framework. 


SOM vs. COM, as seen by IBM 

(Reprinted with permission of IBM) 

(See the System Object Model and the Component Object 
Model: A comparison of technologies from a developer’s 
perspective; IBM Object Technology Products Group in 
Austin) 


"Object model" 

COM: A set of rules that must be implemented in every 
application, coupled with system calls for object 
instantiation, ... 

SOM: A syntax free OO runtime that can be used to implement an 
object-oriented programming language 


Programming methodology 

COM: Object-based 
SOM: Object-oriented 


Relationship to languages 

COM: Language-neutral 

Objects may be written in C or C++ 

C++ objects require user-written additions to become COM 
objects 

SOM: Language-neutral 

Objects may be written in C or C++ (bindings) 

C++ objects = SOM objects (using DTS C++ compilers) 



MetaWare/Pennello//SOM vs. COM, page 


COM's object model does not match any OOPL, and cannot be used 
as an OOP runtime engine by compilers. SOM can be used as a 
common binary runtime engine for C++ compilers and other 
OOPLs. 


Static Typing 

COM: Individual interfaces are statically typed, not objects. 

SOM: Objects statically typed via the class hierarchy 

Static typing permits the language compiler to prevent type 
mismatch errors from showing up at runtime. Lack of static 
typing introduces more runtime failure modes. COM objects 
require runtime operations to ascertain which interfaces are 
supported by an object. 

Method Resolution Mechanisms 

COM: User responsibility, requires 2 steps: 

1. Use Querylnterface or instantiation to get Interface 

2. Indirect function call via interface vector table 
(polymorphism essentially handled by user-written 
code) 

No user intercept capability 
Granularity of polymorphism: interface 

SOM: 3 Forms (offset, name, dispatch) 

User intercept capability for all three (via somDispatch) 
Granularity of polymorphism: (interface, method, 
arbitrary) 


Except for instantiation no COM code is involved in interface 
selection or function invocation. In this area COM is only a 
set of rules, all code involved in interface selection or 
function invocation is user-written. SOM performs method 
resolution (ie, interface selection and function invocation) 
completely automatically, without user-written code. SOM user 
may, however, optionally elect to participate in method 
resolution by overriding the somDispatch mechanism. 


Inheritance 

COM: No implementation-inheritance 

Implementation inheritance considered bad due to possible 
lack of synchronization via base and derived classes. 

New technique called aggregration offerred to offset loss 
of inheritance. 

IUnknown interface frozen since it must be embedded 
within all other interfaces. 

SOM: Single/Multiple 

Synchronization of base and derived classes handled 
automatically during class construction. 

SOM has several mechanisms such as somlsA, etc. which 
be used to simulate aggregation 




MetaWare/Pennello//SOM vs. COM, page 54 


Aggregation is essentially a manual technique entirely 
implemented by user-written code (COM is not involved in 
aggregration; it simply provides rules about what users must 
write). On the other hand, SOM's implementation inheritance 
is automatic and not subject to the "base/derived" class 
problem since (in general) only the base class's public 
interface is available to the derived class. In addition, lack 
of inheritance at the COM level means implementors must cope 
with 2 different object models, one for components, and a 
different one at the implementation language level (since no 
language offers aggregation). 


Functional composition mechanisms 

COM: Containment (or Delegation (user-written)) 

Aggregation, but all objects not required to support it. 
Behavior changes by front-ending with new code 

SOM: Containment (or Delegation (user-written)) 

Inheritance 
Metaclass selection 

Derived metaclasses based on multiple inheritance 
Behavior changes by overriding methods 

COM capabilities require user discipline and adherence to 
protocol conventions, SOM mechanisms are richer and more 
automatic. Some functions cannot be augmented via COM's 
front-ending technique since methods internally invoked within 
an implementation do not interact with the front-end. 
Aggregation is just an optimized form of containment, allowing 
a user to forego the writing of the delegation code. 


Versioning 

COM: User-written versioning using major & minor numbers 

Method implementation refactoring, changes in inheritance 
tree, or object size not visible thru COM. Additions may 
NOT be made to interfaces. Old interfaces must be kept 
and a new interface that include all the old methods 
along with the newly added methods must be created. 

SOM: Automatic base/derived class version checking using major 
& minor numbers 

Optional User-written versioning using major & minor numbers 

Evolution of classes permits refactoring methods, 
additions to inheritance tree, changes in object size, 
additions to interfaces. 

Dramatic difference in philosophy between SOM and COM here; 
SOM permits interfaces to evolve over time without breaking 
client programs, but COM requires proliferation of new 
interfaces while retaining all old interfaces. Also, in SOM 
versioning is essentially automatic, while a user 
responsibility in COM. 

Cross-process 

COM: Automatic marshalling for Microsoft-provided 
COM & OLE interfaces 

User supplied marshalling for custom interfaces 
Distributed support in Cairo 1995 


SOM: Automatic marshalling for IDL interfaces via DSOM 
Hooks for user-written marshalling via somDispatch 



MetaWare/Pennello//SOM vs. COM, page 55 


Complexity 


COM: 1 object reference needed for each object interface 
All objects must be reference counted. 

Aggregation requires user-written code to implement 

All classes and interfaces must have a globally-unique 
persistent Id 


interface implementations must be specially coded to 
permit subsequent aggregation 


SOM: 1 object reference needed per object 

Reference counting may be used when desired 

& can be automated using metaclass programming 
Inheritance is statically declared. 

Local Classes and interfaces do not require 
globally-unique persistent Ids. 

DSOM makes use of UUlDs. 

No special coding required to permit subsequent 
implementation inheritance 


Standards 

COM: Invented by Microsoft, not part of any standard 
Aggregation is not part of any development language 
Available on Windows platforms, Mac System 7 

SOM: Invented by IBM, but built on the OMG CORBA standard 
Inheritance is built into all OOP development languages 
Uses IDL - OMG’s Interface Description Language 
Direct-to-SOM C++ Compiler products map ANSI C++ language 
directly and transparently into SOM 
Available on Windows, OS/2, & AIX, HP (future), SUN 
(future), Mac System 7 (future), Taligent 
(future), WPOS (future) 


Incorporation of standards assures that widespread user 
requirements are being addressed and that compatible APIs and 
products may appear across a broad range of industry 
platforms. 


Unique heatures: 

COM: 

SOM: Dynamic class construction 
Derived metaclasses 

Name Lookup & dispatch method resolution 
Single, multiple, & abstract inheritance 
Implementation detail not exposed via inheritance 
Automatic generation of proxies via DSOM 
Class shadowing 

Automatic base/derived class version checking 
Typed or untyped object references 
Hooks for user written method resolution or runtime 
type checking 


















OS/2 update in 1994— 

& Product Ok?jectives 
® Performance 

• Usability and Function 

OS/2 for SMP 
Beyond 1994 

© Emerging technologies 

* Managing the enterprise 
network 

w « OS/2 for PowerPC 

Conclusions 
Questions ? 


OS/2 Tecnmcal Update, Atlana, 11 m SepB' 


Trademarks 


The following terms are trademarks of the IBM Corporation 
• IBM 
. OS/2 

® Operating System/2 
e Presentation Manager 
o WIN-OS2 
o Workplace Shell 
» PowerPC 

The following terms are trademarks of their respective companies 
o LaserJet, DeskJet 
o Postscript 
o Windows 
® Microsoft 
e Intel 
8 Lexmark 
o Hewlett-Packard 
o Epson 
o Panasonic 
® Tricord 
8 Compaq 
s Wyse 

Copyright ©IBM Corporation, 1994, All rights reserved 

> Copyrigm(P IBM Corporation, 1994, All rights ^eservea_OS/2 Tacnmcai Update, Atlanta, -»Hn September 1994, 














OS/2 2.99 


■ A. for Windows' product 

- Enhanced to support Windows 3.11 
Windows for Workgroups 3.11, 
and Win32s 

- Does not require Windows 

- Ongoing assessment of customer requests and 
needs for future support 

a Fall release 

- 2nd Beta test underway now 

3 Focus on: 

- Performance 

- Usability and Installation 

- Device support 

- Stability and Reliability 

^Copyright O IBM Corporation, 1994. All rignts 'esarved_ OS/2 Technical Update. Atlanta, 11 th September 1994 / 



Performance 

■ Workplace Shelf 

- Tuned for end-user responsiveness 

- Much 'snappier' feel 

- Exploit multiple threading 

a Asynchronous application start-up 

■ Improved algorithms In key system areas 

- Memory management 

- Swapper 

- Loader, etc. 

- For faster boot times 


vCopyright ©IBM Corporation. 1994, All rights 'esarvea 


OS/2 Technical Uodate. Atlanta, Hth S 


Performance 


Improve overall user responsiveness and 
reduce the amount of system resources used 

■ More 32-bit code 

- PMW1N 

- Controls 

- Optimized for Intel 

- Tuned for end-user performance 

■ Merge Presentation Manager DLLs 

- Heavily page tuned for optimum memory usage 



\CopyrighHP IBM Corporation. 1994, All rights reserved 


OS/2 Technical UodaB, Atlanta, 11th SeDtember 1994/ 


Performance Technology 

* New linker and loader 

- Better EXEPACK 

- Faster loading and execution of binaries linked 
with new linker 

■ Using latest version of IBM C/Set++ compiler 

- Code optimized for Intel 486 processor 

- Used C/Set++ code path analysis tools to better 
page tune executable code 



^Copyrights IBM Corporation. 1994. All ngnts 


OS/2 Technical Update, Atlanta, Hth September 1994, 










Performance Technology 


■ A 'performance' version of OS/2 Kernel 

- Selectively installed 

- Excludes trace, debug and performance monitors 

- Easy to switch between full and performance kernel 

* New CONFIG.SYS defaults for performance 

- Based on system hardware configuration 



OS/2 Tecinica! Uoaaie, Atlanta, i 



Performance Expectations 

All figures approximate! 

■ Significantly faster boot times 

- Up to 50% depending upon configuration 

- Saves battery life in notebooks 

■ Applications scenario execution 

- 50% or better improvement to run typical scenario 
in constrained memory environments 

« Our tests are run on 4 MByte systems 

- Typically 20% faster in unconstrained memory 
environments 

• 8 MBytes or more 

■ User Interface much snappier 


J8opyrigntOIBM Corporation, 1994, Ail rights >ese |, veo _OS/2 Technical Upoas, ACanta, 11th Septemoer 1994, 


System Install 

Make OS/2 easier to install, learn and use 

■ 1st phase installs enough to make a workable 
system 

- Disk preparation 

- Video selection 

■ 2nd phase uses selective install system utility 
to let you configure 'optional' system 
components 

- Workplace Shell is active 

■ Chances ©f Installation failure significantly 
reduced. 


\CopyngntO IBM Corporation. 1994, All nghts 














System install 


Improved user Interface and flexibility 

■ Integrated SVGA display driver install 

- Much wider selection of adapters 

■ May install multiple printer drivers 

■ integrated Multimedia install 

- Sound cards 

- CD-ROM support pH 

■ Utilities for laptops Ip! 

- PCMCIA and APM ^ 


^Copyright <D IBM Corporation, >994, All rights reserved 


OS/2 Technical Update, Atlanta, 11th September 1994/ 


Printer Drivers 

■ Leading Printer Support 

- PostScript 

- Hewlett Packard 

- Lexmark 4S|g|g 

- Epson 

- Panasonic 

■ improve network printing 

- Install printer driver from server 

■ Working closely with OEM , 
suppliers to ensure OS/2 \ 
support for printers 



CJWUwi 


\Copyhght ©IBM Corporation, 1994, All right 


OS/2 TecnmcaJ Update, Atlanta, ^th September 11 


Graphics Drivers 


Many more SVGA accelerator chips 
supported 

- S3 enhancements, 801/805,928, 864 ... 

- ATI Mach32, Mach64 ... 

- Tseng ET4000, W32P, W32I... 

- Weitek P9000 ... 

- Western Digital C24, C26, C27, C31, C33, C34 ... 

- Cirrus Logic 5426, 5428, 5430 ... 

Working closely with OEM suppliers to 

ensure OS/2 support for chip 
mr 1 sets 

W OS&LXmse \ 

Jr ) 


\Copynght© IBM Corporation, 1994, All rights reserved 


OS/2 Technical Update, Atlanta, 1 


CD-ROM & Disk Device Support 


Enhanced CD-ROM Support 

■ Many more drives supported 
* Proprietary interfaces 

- Mitsumi, Panasonic, Sony 

■ IDE controller interface 

■ Enhanced SCSI support 

- SCSI-2 

■ Additional SCSI drivers 

- Compaq, Panasonic, PAS, Sony 



\Copynght©lBM Corporation, 1994, All nghts rose 


OS/2 Technical Update, Atlanta, nth September 1994/ 


















































Portable Computing 


OS/2 includes PCMCIA device drivers 
a Socket services for IBM and OEM systems 

- IBM, NEC, AST, Toshiba, 

Gateway and more 

- Supports all three major socket services chip-sets 

■ PlayAtWil! auto-configurator card support 

- Supports all major PCMCIA peripherals including 

modems, communications, memory, disk drives, 
etc. m 

a Workplace Shell Drives object Iff 
enhanced to recognize PCMCIA I 
hard disks, flash memory and 
static RAM 


’SvSSSk,. 


\Copyright (PIBM Corporation, 1994, Ail rights 'eserved 


OS/2 Technical Update, Atlanta, 1 - th September 1! 


Workplace Shell 

Front Panel 

a Fast access to frequently used objects 

- Lockup, Shutdown, 

Command prompts, Printers, etc. 

• You can customize contents ... 

- Add/remove objects 

- Tear-off pull-up menus 

■ And modify appearance ... 

- Horizontal or vertical ^ mmma «hm 

- Large or small icons ipasg w 

- Float on top feature Ilil HH i_1 L 

- With or without titlebar 


jn, 1994, Ail rignts reserved 


OS/2 Technical Updaie, Atlanta, lltn September 1994/ 


Workplace Shelf 


■ Uses SOM2, is a DSOM server 

■ Many new APIs for application developers 

«« Enhancements to user interface 

- Lazy drag 

- Open parent folder 

- Comet cursor 

- Auto-close folders 

- Color palettes 

- Icon text color 

- Background bitmaps, use of palette management 

- You can edit system pointers 

- Enhanced Find, Sort, Include settings 

- And more ... 

^Copyright Q IBM Corporation, 1994, All ogfrts reserved_OS/2 Technical Updae, Atlanla, 1 itn Septemoer 1994, 


Stability and Diagnostics 

■ Many customer-reported problems fixed 
throughout system 

■ You can activate enhanced error recovery 
tools 

- Workplace Shell archive and restore 

- CONFIG.SYS processing status indication 

- 'Escape' from initial boot sequence... so you can 
perform repairs! 









OS/2 for SMP 

* Consistent with industry standard 
Multiprocessor Specification 1.1 

* Total system solution 

- LAN Server 3.0, DB/2, CM/2 

- Available from hardware suppliers 

■ Single OS/2 for SMP package supports all 
SMP machines 

- Device drivers for hardware dependent layer 

■ Device drivers for following machines 
provided in initial release 

. ALR AST 

Compaq Hewlett-Packard 
Sote§ Tricord 

Vtech Wyse 



> Copynght(PIBM Corporation, 1994, Ai' ngn^s reserved 


OS/2 TecnmcaJ Upqata, Atlanta, ^iih Sepamper *994, 


OS/2 for SMP 


« OS/2 for Symmetric Multiprocessing §g| 

- Available now mum W 

- Based on OS/2 2.11 |||||| jpg 

■ Designed to scale well on . 

additional processors fjpil 

- 16 Processor optimum design point 

■ Transparent to end User 

- Multithread applications naturally exploit multiple 
processors 

- OS/2 kernel dispatches work transparently 

■ Excellent performance improvements 

- ideal for server/database applications i pilf 


yCopyrigmOIBM Corporation, 1994, All fights re 


OS/2 Technical Update, Atlanta, 11th September 1 



























_ > 

Emerging Technology Support 

OPENDOC support 

■ Compound document architecture 

- Supports imbedded text, sound, video, etc. 

■ Network ready through SOM Objects 

■ inter-operability 

■ Alpha available today... Beta later in 1994. 



Enterprise Focus 


Position OS/2 as client/server solution 

■ Security enabling 

- User option 

- C2 level security with vendor add-ons 

- Built-in desktop security 

• Shell restrictions 

• Multiple private desktops 

■ Improved network management 
and diagnostics 



\Copyngm IBM Corporation. 1994, All ngnts ^served 



OS/? Technical Update, Atlanta, nth September 1994/ 


Systems Management 


■ System Management 

- FFST (First Failure System Technology) 

- Unattended operations 

- Vital product data 

- Error logging 

- Process level dump and dump 
formatting 

- Improved CID support 

- Software license management 

\» 


\Gopy fight O IBM Corporation. 1994, AH -ights fa served____ OS/2 Technical Update. Atlanta, 11 th September "994 / 



OS/2 for PowerPC 


■ Provide OS/2 support on PReP compatible 
PowerPC systems 

■ Re-compile 32-bit OS/2 applications for 
PowerPC 

■ Binary compatibility for 16-bit DOS and 
Windows applications 

- Using a high-performance Instruction Set 
Translator (1ST) 

0 Supports OS/2 applications 

- With many under-lying technology enhancements 


\CopyrigntOIBM Corporation, 1994, All r »ghts '•eserved_OS/2 Technical Update, Atiama, 1 ith September 1994 ) 









































OS/2 for PowerPC 


■ An OS/2 Personality 

- built on top of the IBM Microkernel and Workplace 
OS technology 

- Supports OS/2 32-bit 'DosXxx' APIs 

- Portable to other processor platforms 



\Copynght <P IBM Corporation, 1994, Ail rights reserved__ OS/2 Tecnnical Update, Atlanta, Sep temper 1994 / 


Workplace OS Technology 

Common components across platforms 



•OS/2- $2 Bk AP? s* Tangent Frameworks, OpenDoc | 


' Personalities PNS Device drivers 



j iRtet ~j ' j~ Pwt*tP$ "] Intel /Other... 1 


Common Desktop 
Look and Feel 


Common Application 
Programming interface 


Common Device Driver 
New Mode! Supporting 
Multiple Architectures 



Copyright O IBM Corporation, 1994, All ngnts -8served 


OS/2 Technical Update, Atlanta, 1 1 1 1 Septer 


OS/2 for PowerPC 


» Add file system, Presentation Manager and 
other components to complete the system 


WPS 


OS/2 


OS/2 



Add \ 


App l 

i _ mm®®: 

. ’ .P 

i 



\CapynghKPIBM Corporation. 1994, All ngnts reserved 


OS/2 Technical UpdaB, Atlanta, Vtn September 1994/ 












































PSP Development Team Goals 

Customer Satisfaction $ 

» Focus on low-end systems 

- Performance ^csjj 

- Usability J WT^m 

m Accelerate support of Industry Jgf 
standard hardware and peripherals. 

■ Continue to provide world-class application 
support 

■ Be a leader In emerging technologies 

■ Enable application portability 


\Copyngmg>tBM Corporation, 1994, All nghg reserved 


OS/2 Technical Update. Atlanta, 11 th September 1994/ 


Summary 

■ Continuing investment in OS/2 
' By !BM 

- By software developers . BV/ 

- By customers 

■ Many enhancements planned “^||!|P r 

- Performance, function and technology 

■ Investment in OS/2 today is secure for the 
future 

- Portable to OS/2 for PowerPC 

- Workplace technology 


V^Copyr.ght ® IBM Corporation, 1994, All rights reserved 


OS/2 Technical Update, Atlanta, 11 fo September 1994/ 


OS/2 is not dead! 

■ New versions of OS/2 in 1994 

-OS/2 for SMP2.11 

- OS/2 update ’real soon now’ 

■ Continuing investment In the future 

- An OS/2 update in 1995 

- OS/2 for PowerPC 

■ Large investment by IBM in the Workplace 
operating system technology 

- To protect existing OS/2 investments 

- To provide the greatest level of application 
compatibility and portability 


^CopyrigmoiBMCoroorat'On. 1994, All rights reserves _OS/2 Technical UpdaB, Aflania. nth September 1994, 










































ZQSO 


OS/2 And Windows 


Kogan Associates, Inc* 

Computer Consulting & Education Services 


What Corporate Users Want 


» To Minimize The Costs Of Delivering Solutions To 
Corporate CSients/Users 

» Connectivity To Distributed Resources/Workgroup 
Computing Solutions 

- Distributed Network Administration/Management 
® Security 
s Multivendor 

- Flexibility 

- Cost 

« Clear Migration Path 

Copyright €>1994 Kogan Associates, Inc. 


What Users Want 


■ To Use Computers To Make Them More Productive 
» Software 

- Applications 

- Friendly, Easy To Use 

- Ability To Do More Than One Thing At A Time 
* Hardware 

- Power To Run Applications (Fast) 

- Most Value/Power For The Money 
» Operating System Environment 

- Gives The User The Most Flexibility Choosing 
Applications Software And Hardware Systems 

Copyright © 1994 Kogan Associates, Inc. 


Implications Of User Wants For 
Operating Systems 

. Provide The Ability T© Run Existing Applications 

- Run On Existing Hardware Platforms 

• Allow Users To Run Multiple Applications 
Concurrently 

- System Must Implement Policies T© Guarantee 
Integrity/Reliability Of Multitasking Environment 

- Applications Are Not Perfect 

- System Must Be Able To Tolerate Problems 

- No More "Save Early And Often" Mentality 

- System Must Control Multitasking, Not Applications 
■ Protection 

- System Must Be Protected From Applications 

- Applications Must Be Protected From Each Other 

Copyright ©1994 Kogan Associates, Inc. 




What Software Developers Want 


■ Make Money Selling Software Solutions 

■ Requires Platform Capable Of Supporting 
Applications With Sufficient Volumes To Enable Profit 

■ Tools To Support Efficient Application Development 
a Spend Development Effort On Distinguishing 

Application Function instead Of Chasing APIs 
« Enable Application Across Platforms 
H Preserve investment In Source Code 


Copyright © 1994 Kogan Associates, Inc. 


32-Bit Client Platform 


■ Run On Most 386/486 Systems 

« Run Existing DOS And Wfn16 Apps 

■ Preemptively Multitask Old And Mew Applications 
a Provide System And Application Protection 

■ Enable Portable 32-Bit Applications 

a Obj@ct»©ri@tned Graphical User interface 


Copyright © 1994 Kogan Associates, Inc. 


Implications Of Software Developer Wants For 
Operating Systems 


« OS Installed Base To Support Application Sales 
■ Powerful Tools For Development 
® Portable Application Programming Interfaces 


Copyright ©1994 Kogan Associates, Inc. 


32-Bit Server Platform 

* interoperate With Everything 

- BOS, OS/2 3 UNIX, Mainframe OS 

- Novell, Banyan, LAMManager, LAMServer, AppleTalk 

- NETBIOS, SMB, TCP/IP, SNA, OSI, SPX/IPX 
» File And Print Sharing 

■ Distributed Applications 

* Network Management 

- Configuration, Distribution, Installation Tools 

- Remote Installation And Update 

- Remote Administration 

■ Security 

■ Multiprocessor Support For Application Servers 


Copyright ©1994 Kogan Associates, Inc. 



OS/2 And Windows 


- Current Systems 

- Windows 3.X (>40M) 

- OS/2 2.X (>5M) 

- Windows NT 3.1 (<1M) 

= Future Systems 

- ChIcago/WI ndows 4.0 (Beta 2QS4) 

- OS/2 2.2 (Beta 2Q94) 

- Daytona/Windows NT 3.5 (Beta 2Q94) 

- Power OS/2 (Beta 2H94) 


Compare And Contrast 


- Hardware Requirements 

- Architectures 

- DOS Compatibility 

* Windows 3.X Compatibility 
= 32-Bit Applications 

- Strategy And Positioning 
■ Migration Issues 

- Challenges 

a Predictions & Projections 


Copyright ©1994 Kogan Associates, Inc. 


Copyright © 1994 Kogan Associates, Inc. 


Hardware Requirements 



Windows 3.1 
(Enhanced) 

OS/2 2.1 

Windows NT 3.1 

Processor 

- Required 

16Mhz 

16MHz 

25MHz 


386SX 

386SX 

486DX 

- Recommended 

20MHz 

25MHz 

66MHz 

Memory 

486SX 

486SX 

486DX2-RISC 

- Required 

2MB 

4MB 

12MB 

- Recommended 

4MB 

8MB 

16MB 

Disk 

30MB 

50MB 

80MB 


Hardware Requirements 



Windows 4.0 

OS/2 2.2 

Windows NT 3.5 

Power OS/2 

Processor 

- Required 

16Mhz 

16MHz 

25MHz 

25MHz 

386SX 

386SX 

486DX-R1SG 

486DX-RISC 

- Recommended 

25MHz 

25MHz 

66MHz 

66MHz 

Memory 

486SX 

486SX 

486DX2-R8SG 

486DX2-R8SC 

- Required 

4MB 

4MB 

SMB 

SMB 

- Recommended 

SMB 

4MB 

12MB 

12-16MB 

Disk 

50MB 

50MB 

80MB 

80MB 


N.N. - Windows NT & Power OS/2 Add 4-8MB RAM On RISC 


Copyright ©1994 Kogan Associates, Inc. 


Copyright © 1994 Kogan Associates, Inc. 



Windows 3.1 With Win32s 



Windows NT 3.1 



_ NT Executive _ 

_ Executive Services 

Device Drivers | Hardware Abstraction 
_ Machine Dependent Code 


Kernel 




OS/2 2=1 



Copyright © 1994 Kogan Associates, fnc. 


System Capabilities 



Windows 3.1 
(Enhanced) 

OS/2 2.1 

Windows NT 3. 

System Technology 

DOS 

Monolithic 

Layered 

Multitasking 

Extender 

Monitor 

Microkernel 

- DOS 

Preemptive 

Preemptive 

Preemptive 

- Win16 

Cooperative 

Preemptive 

Cooperative 

- 32-Bit 
Compatibility 

Cooperative 

Preemptive 

Preemptive 

- DOS 

Full 

Full 

Partial 

- Win16 

Full 

Most 

Partial 

- Device Drivers 

Yes 

Most 

No 

User Interface 

Program & 

Workplace 

Program & File 


File Mngrs 

Shell Mngrs 

"Copyright © 1994 Kogan Associates, Inc. 


































System Capabilities 

Windows 3.1 OS/2 2.1 Windows NT 3.1 

(Enhanced) 


> Protection 

No 

Yes 

Yes 

= Security 

Add On 

Add On 

integrated 

■ Symmetric 

Multiprocessing 

No 

No 

Yes 

s Portability 

- Application 

Win32s 

OS/2 32-Bit 

UtlinQO 

- System 

No 

No 

Yes 

■ File Systems 

FAT 

FAT/HPFS 

FAT/HPFS/NTFS 


Copyright © 1994 Kogan Associates, Inc. 


DOS Compatibility 



Windows 3.1 
(Enhanced) 

OS/2 2.1 

Windows NT 3. 

Compatibility 

DOS 

DOS In VDM 

DOS Emulation 

DOS Emulation 

Device Drivers 

Yes 

Yes 

No 

Multitasking 

Preemptive 

Preemptive 

Preemptive 


TimesSicing 

Timeslicing 

Timeslicing 

Priority 

Protection 

Static 

Dynamic 

Dynamic 

- System 

No 

Yes 

Yes 

- Application 

No 

Yes 

Yes 

Configuration 

P!F 

DOS Settings 

Registry 


Copyright © 1994 Kogan Associates, Inc. 


System Capabilities 

Windows 3.1 OS/2 2.1 Windows NT 3.1 
(Enhanced) 


I/O 




- Overlapped I/O 

No 

Yes 

Yes 

- Asynchronous I/O 

No 

Yes 

Yes 

- Command Chaining 

No 

Yes 

Yes 

- Scatter/Gather 

No 

Yes 

Yes 

ay ty B 

- I ikj 

No 

Yes 

Yes 

- Device Driver Model 

16-Bit 

16/32-Bit 

32-Bit 

Power Management 

Yes 

Yes 

Yes 

Multimedia 

Yes 

Yes 

Yes 

Pen Extensions 

Yes 

Yes 

Yes 

Workgroup Support 

Yes 

Add On 

Yes 

International Support 

Yes 

^^opyright © 1994 KoganXfsociates, Inc. 


Win16 Applications 



Windows 3.1 
(Enhanced) 

OS/2 2.1 

Windows NT 3.1 

Compatibility 

- 

DPMI-based 

WINOS2 In 
VDM 

WOW- Win16 
To Win32 
Mapping 

Device Drivers 

Yes 

Yes 

No 

Virtual Device 

Yes 

No 

No 

Drivers (VxD) 

Multitasking 

Cooperative 

Cooperative 

And/Or 

Preemptive 

Cooperative 

Protection 

- System 

No 

Yes 

Yes 

- Applications 

No 

Yes No 

Copyright © 1994 Kogan Associates, Inc. 



Chicago/Windows 4.0 


* Expected 4Q94, 1Q95 
» Hardware 

- 32-bit x86 Only 

- Mo Multiprocessors 

- 4MB RAM Minimum 
« Compatibility 

- DOS 

- Windows 3„X 
« Wsn32c 

« 32=Bst OLE 2=0 

* Asynchronous Input Queues 

« Object Oriented GUI (Explorer) 

« Systems Management 

Copyright ©1994 Kogan Associates, Inc. 


OS/2 2.2 

■ Expected 4Q94 
« Hardware 

- Better 4MB Minimum System 

- OS/2 BMP 

- More Drivers, Better Preload Support 
= Compatibility 

- DOS 6„X 

- Win VxDs, Win32s 
« PM/Workpfaee 

- Enhanced Workplace Controls 

- 32-Bit PMW1M, Asynchronous input Queues 

- Distributed SOM, OpenDoc 

■ Security 


Copyright © 1994 Kogan Associates, Inc. 


Chicago/Windows 4.0 



Copyright ©1994 Kogan Associates, Inc. 


OS/2 2.2 



Copyright ©1994 Kogan Associates, Inc. 









Daytona/Windows NT 3.5 


■ Expected 3Q94 

■ Hardware 

- Lower Memory Requirements 

- Better Performance 

- More Drivers 
= Bug Fixes 

» Multiple WOW Environments 
« 32-Bit OLE 2n0 
H More Networking Support 
« No Chicago GUI Extensions 

Copyright © 1994 Kogan Associates, Inc. 


Power OS/2 


• Expected 2H95 

■ PowerPC OS/2 System Implementation Based On 
Mach 3.0 Microkernel Technology 
» Hardware 

- PowerPC And x86 

- 12-16MB RAM Minimum 

- SMP In Future 

. Multiple Operating System Personalities 

- DOS, Windows, OS/2 Initially (OS/2 2.X Feature Set) 

- A1X, Macintosh, Pink In Future ??? 

. Security 


Copyright ©1994 Kogan Associates, Inc. 


Daytona/Windows NT 3.5 



DOS Subsystem 


Win32 Subsystem 


NT Executive 


Executive Services 


Device Drivers) Hardware Abstraction | 

Kernel 

Machine Dependent Code 


Hardware 

Coovriat 

it © 1994 Koqan Associate! 


Power OS/2 








System Capabilities 



Windows 4.0 

OS/2 2.2 

Windows NT 3.5 

Power OS/2 

System 

DOS Extender 

Monolithic 

Layered 

Layered 

Technology 


Monitor 

Microkernel 

Microkernel 

Multitasking 
- DOS 

Preemptive 

Preemptive 

Preemptive 

Preemptive 

- Win16 

Cooperative 

Preemptive 

Preemptive 

Preemptive 

- 32-Bit 

Preemptive 

Preemptive 

Preemptive 

Preemptive 

Compatibility 
- DOS 

Full 

Full 

Partial 

Partial 

- Win16 

Most 

Most 

Partial 

Partial 

- Device Drivers 

Most 

Most 

No 

No 

Protection 

Some 

Yes 

Yes 

Yes 

SMP 

No 

OS/2 SMP 

Yes 

Yes 

Portability 
- Application 

Win32c 

OS/2 32-Bit 

Win32 

OS/2 32-Bit 

- System 

No 

No 

Yes 

Yes 

User Interface 

Explorer 

Workplace 

Program, File, 

Workplace 



Shell 

Print Mngrs Shell 

Copyright ©f994 Kogan Associates, In 


DOS Compatibility 



Windows 4.0 

OS/2 2.2 

Windows NT 3.5 

Power OS/2 

Compatibility 

DOS inVDM 

DOS Emul. 

DOS In VDM 

DOS Emul. 

DOS Emul. 

DOS Emul. 

Device Drivers 

Yes 

Yes 

No 

Maybe 

Multitasking 

Preemptive 

Preemptive 

Preemptive 

Preemptive 


Timeslicing 

Timeslicing 

Timeslicing 

Timeslicing 

Priority 

Protection 

Dynamic 

Dynamic 

Dynamic 

Dynamic 

- System 

Yes 

Yes 

Yes 

Yes 

- Application 

Yes 

Yes 

Yes 

Yes 

Configuration 

Registry 

DOS Settings 

Registry 

DOS Settings 


Copyright © 1994 Kogan Associates, Inc. 


System Capabilities 



Windows 4.0 

OS/2 2.2 

Windows NT 3.5 

Power OS/2 

m Security 

Login 

Integrated 

Integrated 

Integrated 

■ File Systems 

FAT 

FAT/HPFS 

FAT/HPFS/NTFS 

FAT/HPFS 

- I/O 

- Overlapped I/O 

Yes 

Yes 

Yes 

Yes 

- Async I/O 

Yes 

Yes 

Yes 

Yes 

- Cmd Chaining 

Yes 

Yes 

Yes 

Yes 

- Scatter/Gather 

Yes 

Yes 

Yes 

Yes 

- 32-Bit I/O 

Yes 

Yes 

Yes 

Yes 

- Device Driver 

Model 

16/32-Bit 

16/32-Bit 

32-Bit 

32-Bit 

h Power Mgmt 

Yes 

Yes 

Yes 

Yes 

a Multimedia 

Yes 

Yes 

Yes 

Yes 

- Pen Extensions 

Yes 

Yes 

Yes 

Yes 

■ Networking 

Yes 

AddOn 

Yes 

Yes 

- Inti Support 

Yes 

Yes 

Yes 

Yes 

■ Plug&Play 

Yes 

Yes 

? ? 

Copyright ©1994 Kogan Associates, Inc. 



WIn16 

Applications 



Windows 4.0 

OS/2 2.2 

Windows NT 3.5 

Power OS/2 

■ Compatibility 

Win16 

DPMI-based 

WOW-Win16 

DPMI-based 



WINOS2 In 

To Win32 

WINOS2 In 



VDM 

Mapping 

VDM 

■ Device Drivers 

Yes 

Yes 

No 

Maybe 

s Virtual Device 





Drivers (VxD) 

Some 

Some 

No 

No 

■ Multitasking 

Cooperative 

Cooperative 

Cooperative 

Cooperative 



And/Or 

And/Or 

And/Or 



Preemptive 

Preemptive 

Preemptive 

■ Protection 





- System 

No 

Yes 

Yes 

Yes 

- Applications 

No 

Yes 

Yes 

Yes 


Copyright © 1994 Kogan Associates, Inc. 




Windows 32-Bit API 


■ Win32s 

- Compatible 32-Bit Version Of Windows 16-Bit 
Standard Mode APIs For Windows 3.1 

» Win32c 

- An Enhanced Version Of The Windows 16-Bst 
Standard Mode APIs For Chicago/Windows 4.0 

- Adds Preemptive Multitasking. Multithreading, IRC, 
Protection, GUI Enhancements 

- Win32 

- FuiS Funtionality Only On Windows NT 

- includes More Mission Critical Features 

Copyright ©1994 Kogan Associates, Inc. 


Win32s For Windows 3.1 


■ 32-Bit Windows Subset API 
a Enables Flat Memory Model 

® Expands Critical Data Structures To 32-Bit 
B Modified Window Messaging Protocol 

■ Memory-mapped Files 

® Better Performance For Bata-intensive Apps In 
Single-tasking System 


Copyright ©1994 Kogan Associates, Inc. 


Windows 32-Bit AP! Compatibility 


-Win32 

-Win32c- 

-Wj f» 32 s — -—- 


Chicago 
Windows 4.0 

Copyright © 1994 Kogan Associates, Inc. 


Win32c For Chicago/Windows 4.0 


* Win32s* 

- Preemptive Multitasking 

■ Memory Protection 

- Multithreading 

- IRC 

■ Asynchronous Input Queues 
» Object-Oriented GUI Controls 




Copyright © 1994 Kogan Associates, Inc. 




Win32 For Windows NT 


OS/2 32-Bit API 


■ FuSS Function Mission Critical API 

■ Win32c+ 

- Advanced Graphics 

- Networking 

- Security 

- Unicode 


Copyright © 1994 Kogan Associates, Inc. 


32-Bit Applications 



Win32s 

OS/2 

Win32 On 


On WIn3 D 1 

32-Bit 

Windows NT 

Multitasking 

Cooperative 

Preemptive 

Preemptive 

Input Queue(s) 

Single 

Multiple 

Multiple 


Synchronous Synchronous 

Asynchronous 

Multiple Threads 

No 

Yes 

Yes 

Memory Mgmt 




- Flat Memory 

Yes 

Yes 

Yes 

- Separate Process 

No 

Yes 

Yes 

Address Spaces 




Protection 




- System 

No 

Yes 

Yes 

» Application 

No 

Yes 

Yes 


Copyright © 1994 Kogan Associates, Inc. 


« Enhanced 32-Bit Version Of OS/2 16-Bit APS 

■ Processor And MP Transparency 

« Enables Development Of Portable Modules 

■ Enhanced Function 

■ Increased System Limits 


Copyright © 1994 Kogan Associates, Inc. 


32-Bit Applications 



Win32s 

OS/2 

Win32 On 


On Wm3„1 

32-Bit 

Windows NT 

- IPC 

No 

Yes 

Yes 

■ Exception Mgmt 

Yes 

Yes 

Yes 

■ Memory-mapped 
Files 

Yes 

No 

Yes 

® Security 

No 

Add On 

Yes 

■ Remote Procedure 
Calls (RPC) 

No 

Add On 

Yes 


Copyright ©1994 Kogan Associates, Inc. 



32-Bit Applications 



Windows 4.0 

OS/2 2.2 

Windows NT 3.5 

Power OS/2 

API 

Win32c 

OS/2 32-Bit 

Win32 

OS/2 32-Bit 

Multitasking 

Preemptive 

Preemptive 

Preemptive 

Preemptive 

Input Queues) 

Multiple 

Multiple 

Multiple 

Multiple 


Asynchronous 

Asynchronous Asynchronous Asynchronous 

Multiple Threads 

Yes 

Yes 

Yes 

Yes 

Memory Mgmt 
- Flat Memory 

Yes 

Yes 

Yes 

Yes 

_ Unique Process 

Yes 

Yes 

Yes 

Yes 

Address Spaces 

- System 

Some 

Yes 

Yes 

Yes 

- Application 

Yes 

Yes 

Yes 

Yes 


Copyright © 1994 Kogan Associates, Inc. 


32-Bit Applications 



Windows 4.0 

OS/2 2.2 

Windows NT 3.5 

Power OS/2 

. SPC 

Yes 

Yes 

Yes 

Yes 

* Exception Mgmt 

Yes 

Yes 

Yes 

Yes 

» Memory-mapped 

Yes 

No 

Yes 

Maybe 

Files 

■ Security 

Login 

Yes 

Yes 

Yes 

» Remote Procedure 

Add On 

Add On 

Yes 

Yes 

Calls (RPC) 

■ Object Mode! 

COM 

SOM 

COM 

SOM 

■ Gompund 

OLE 2.0 

OnenDoc 

QLE 2.0 

n- 

vpcuuuv 

Documents 


Copyright © 1994 Kogan Associates, Inc. 


Windows Platform Strategy 


» Windows 3.1 

- x86 Client 

» Chieago/WIndows 4,0 

- x86 Client 
■ Windows HT 

- RISC Client 

- Server 

- Developer System 

a ISVs Can Build Apps That Work Across Windows 
Family Of Products 

Copyright ©1994 Kogan Associates, Inc. 


Windows Migration Issues 


. Different Feature Sets Make Maintaining Single 
Source Code For Win32s, Win32c, Win32 Difficult 
. Win32s On Windows 3.1 And Chicago Do Mot Meet 
Requirements For Multitasking And Protection 
• Can't Have Compatibility And Performance (3.1) With 
Mission Critical Features (NT) 

« Chicago Does Not Go Far Enough To Fill Gap In 
Product Line 

. Chicago GUI Features Not Available On Windows NT 


Copyright © 1994 Kogan Associates, Inc. 



OS/2 Platform Strategy 


- OS/2 2.X 

- x@6 Client 

- x86 Server (pre-Power OS/2) 

- Developer System (pr@=Power OS/2) 

■ Power OS/2 

- RISC Client 

- Server 

- Developer System 

■ Continued Enhancement Of API And System 
Functions To Exploit Evolving Technologies 

Copyright © 1994 Kogan Associates, Inc. 


Challenges For Windows 


■ Deliver Chicago As Promised 

■ Lever Chicago Into OEM Preload Market As Successor 
To Windows 3.X 

■ Update Windows NT To Chicago Functionality 

■ Elaborate Chicago To Cairo Direction 


Copyright © 1994 Kogan Associates, Inc. 


OS/2 Migration Issues 


* Strategy is Straightforward 

■ Single Full-Function API Across Ail Platforms 

■ OS/2 2„X is Squeezed To Middle Ground 

- Provides Compatibility Of Windows 3d AND 
Provides Mission Critical Features Of Windows NT 
On A Larger Volume Of Systems 

- Will Compete With Chicago/Windows 4.0 

- Has Large Head Start On Chicago 

■ Power OS/2 To Compete With Windows NT 


Copyright ©1994 Kogan Associates, Inc. 


Challenges For OS/2 


0 Pursue ISVs 

- 32-Bit OS/2 Applications 

- Tools & Support 

® Pursue OEM Preload Market 
* Aggresive Marketing, Advertising, And Promotion 
= Deliver OS/2 2.2 And Power OS/2 Beta 
a Elaborate Product Packaging Strategy 


Copyright © 1994 Kogan Associates, Inc. 



Summary 


- IBM Has The System That Microsoft Heeds Today 

- OS/2 2.X 

a Microsoft Has The System That IBM Heeds Tomorrow 

- Windows NT 


Copyright © 1994 Kogan Associates, Inc. 


Projections 

- Ho Single System Will Dominate 
h "And" World, Hot "Either/Or" World 
. Market Will Be MultipSatform And Multivendor 
» More Choices For Users And Corporations 
® Heterogenous Distributed Systems 
a Key issues 

- Productivity 

- Compatibility 

- interoperability 

- network Management 

- Return On investment 


Copyright ©1994 Kogan Associates, Inc. 


Predictions 


• Chicago Will Ship End Of 1Q95 

- Will Need More Memory Than Expected 

- Will Not Immediately Spark Massive 3.1 Upgrade 

- Will Have Stability, Compatibility, And Migration 
Typical Of First Release 

- IS Will Watch From Sidelines 

- Windows 4.1 Will Ship 4Q95 
. OS/2 2.2 Will Ship 4Q94 

. Windows NT 3.5 Will Ship 3Q94 
. Power OS/2 Will Ship 1H95 

- First Release Blues 

- Similar To Windows NT Sn Performance, Hardware 
Required, And Compatibility But Better OOUI 

Copyright @1994 Kogan Associates, Inc. 


The Design Of OS/2, 2nd Edition 

■ Highlights 

- Updated to cover OS/2 2.1, 2.2, OS/2 for Windows, 
OS/2 for SMP, Workplace OS, OS/2 for PowerPC 

- New chapters on Multimedia, Multiprocessors, and 
Microkernels 

- Expanded coverage of latest microprocessor 
technologies (Pentium, PowerPC, Alpha) and 
system architectures 

. Ordering info email !nternet:os2@aw.com 

. 1st edition comments and suggestions email 

Internet:76711.212@compuserve.com or 

Compuserve:76711,212 


Copyright ©1994 Kogan Associates, Inc. 





0303 


Industry Trends 


Eye On OS/2 


Kogan Associates; !nc= 

Computer Consulting Si Education Services 


« 1980s 

- Personal Computing On Micros 

- Productivity/Entertainment Applications 

- Single-tasking, Limited Mission-Critical Orientation 

- Evolution Of GUL Multimedia 
- 1930s 

- Industrial-strength Computing On Micros 

- Personal Productivity + Mission-Critical Apps 

- Multitasking, integration Of GUI And Multimedia 

- Distributed Systems/Open Systems 

- Downsizing 


Copyright © 1994 Kogan Associates, Inc. 


Software Trends 

■ 32-Bits And Beyond 

■ Cross-Platform 

- Processor/instruction Set Ind@p@ndene@\ 

- Device Independence 

- Multiprocessor Independence 

- Scalability 

» Object Orientation 

- Enhanced Programming Productivity 

- Better Structuring, Module Reuse, Better Quality 

- Helps Meet Cross-Platform Goals 
a Multimedia integration/Exploitation 
« Backward Compatibility 


Compatibility 


. DOS 6.X 
■ Windows VxDs 
- Win32s API Compatibility 
* Chicago 


Copyright © 1994 Kogan Associates, Inc. 


Copyright ©1994 Kogan Associates, Inc. 




OS/2 API Enhancements 


Presentation Manager 


Console I/O Interfaces 
Memory-Mapped Flies 
Better Debugging API 
Asynchronous Exception Capability 
Workplace Shelf Interfaces 


32-Bit PMWIN internals 

- Better Performance 

- Better Memory Utilization 
Asynchronous Input Queues 
Workplace Shell GUI Enhancements 

- Better Look And Feel 

- Front Panel Control 

- Enhanced Task Manager 


Copyright © 1994 Kogan Associates, Inc. 


Copyright ©1994 Kogan Associates, Inc. 


Object Technology 


Network Integration 


Distributed System Object Model 

- SOM2 Or Workstation SOM 

- Supports Interprocess Object Management 

- CORBA-Compliant IDL 

- Workplace Shell Mo Longer Object Server 
OpenDoc 

- Component-Based Compound Document 
Technology 

- OLE Support 8s Vital 

- OpenDoc is Superior But OLE Is Defacto Standard 


* Network Transport Services (MTS/2) 

■ Peer Services 

■ LAM Requestor 

« Workgroup DSOM 
a OSF DCE/DME Extensions 

- Sockets 

- Remote Procedure Calls (RPC) 

■ Security 

- Login (C2) 

- Discretionary Access Control (C2) 

- Mandatory Access Control (B2) 


Copyright ©1994 Kogan Associates, Inc. 


Copyright ©1994 Kogan Associates, Inc. 



OS/2 2.2 


» Hardware 

- Better Performance, Better Memory Utilization 

- More Drivers, Better Preload Support 
a Compatibility 

- DOS 6„X 

- Win VxDS, Win32s 
« PM/Workplaee 

- 32-Bit PMWIN 

- Asynchronous Input Queues 

- Distributed SOM, OpenDoc 
a Network integration 

■ Better Productivity Tools 

Copyright ©1994 Kogan Associates, Inc. 


Mach System Architecture 



t 

User 
Mode 

Supervisor 
Mode 

I 



Copyright ©1994 Kogan Associates, Inc. 


Microkernel API 

Machine Independent Microkernel Services 
Multitasking IPC Memory Management 

Machine Dependent Microkernel Code 
Int/Excp Mgmt Cache Ctrl DMA Ctrl Bus Ctrl I/O Dev Time Mgmt 



Mach Microkernel Technology 


■ Result Of Research On Portable Multiprocessor 
Exploitation At Carnegie Mellon University 
» Microkernel = Abstraction Provides 
Machine-independence/Machine-Dependence For 
Operating Systems in Multiprocessor Environments 
» Client-Server Message-Passing Architecture 
* Ported To Wide Variety ©f Processor Arad mP 
Architectures 
» Funded By DARPA 
- Ongoing Research 
« Industry Standard Open Microkernel 

Copyright ©1994 Kogan Associates, Inc. 


Power OS/2 


. Portable OS/2 System Implementation That Enables 
OS/2 On Non-x86 Platforms 

• Workplace OS Technology 

• IBM/Mach 3.0-Based Microkernel 
■ 32-Bit Portable Device Drivers 

« 32-Bit File Systems 
. Symmetric Multiprocessing 

• Security 

. Multiple Operating System Personalities 
- DOS, Windows, OS/2 


Copyright ©1994 Kogan Associates, Inc. 














OS/2 2.X System Architecture 



Supervisor 

Mode ~ 

! vdm Services OS/2 Kernel 

T Virtual Device Drivers IPC Program Management 

~ Multitasking Memory Management 

Hi Device Drivers 1 ] . I/O & File Systems Snt/Excp Management | 



Copyright ©1994 Kogan Associates, Jnc. 


Why Take The RISC In 1994? 


- Pentium And x86-Compatibles Continue x86 Market 
Dominance 

■ OS/2 2.X And Chicago Extend Life Of x86 Systems 
» PowerMac Remains Limited 

■ Ho Prime Time OS Available For RUSC-based PCs 

■ DOS And Windows 3.X Emulation On RISC Still Has 
Poor Performance And Compatibility 


Copyright ©1994 Kogan Associates, Inc. 


Power OS/2 System Architecture 




Supervisor 

Mode Microkernel API 

I Machine Independent Microkernel Services 

v Multitasking IPC Memory Management 

Machine Dependent Microkernel Code 
Int/Excp Mgmt Cache Ctrl DMA Ctrl Bus Ctrl I/O Dev Time Mgmt 



Copyright© 1994 Kogan Associates, Inc. 


Multiprocessing 

■ Multiprocessors Enhance Performance By Enabling: 

- Multiple Single-threaded Applications To Run 
Concurrently 

- Multiple Threads Of A Single Parallel Application To 
Run Concurrently (Algorithmic Parallelism) 

■ Multiprocessor Solutions Benefit Processor-Bound 
Applications 

- Numeric intensive Computing 

- Applications Servers 

« Multiprocessor Architectures 

- Assymetric vs. Symmetric 

- Tightly-coupled vs. Loosely-coupled 


Copyright ©1994 Kogan Associates, Inc. 












OS/2 Future Synergy 


. OS/2 2.X 

- x86-Sp@dfic And Exploitative 

- From Entry-Level To High-End x86 

- x86 Uniprocessor And Multiprocessor 
■ Power OS/2 

- Cross-Platform Portability (PowerPC And x86) 

- From High-End x86 Up 

- Symmetric Multiprocessing 


Copyright ©1994 Kogan Associates, Inc. 


OS/2 BMP 


m Targets Tightly-Coupled x86 SMP Platforms 

■ Allows x86 Users To Scale Performance Without 
Leaving x86 Architecture 

■ Small Footprint (Client) Or Large Footprint (Server) 
* Platform-Specific Driver Architecture For 

SMP-Independence 

■ Enhancements To Device Driver Model 

■ Limited Kernel Reentrancy In First Release 

■ Future Release To Have More Kernel Reentrancy 


Copyright ©1994 Kogan Associates, Inc. 


Summary 


• OS/2 Has 

- Window Of Opportunity To Be Dominant 32-Bit 
Client And Server 

- Clear Technological Path To Future 
- OS/2 Needs 

- 32-Bit Native Applications (Win Hearts Of ISVs) 

- Preload OEM Sales (Win Hearts Of OEMs) 

- Continue Aggressve Marketing And Sales 

- Enhance Packaging And Distribution Options 


Copyright ©1994 Kogan Associates, Inc. 





The Design Of OS/2, 2nd Edition 


Highlights 

» Updated to cover OS/2 2.1, 2.2, OS/2 for Windows, 
OS/2 for BMP, Workplace OS, OS/2 for PowerPC 

- New chapters on Multimedia, Multiprocessors, and 
Microkernels 

- Expanded coverage of latest microprocessor 
technologies (Pentium, PowerPC, Alpha) and 
system architectures 

Ordering info email Intern@t:os2@aw.eom 

1st edition comments and suggestions email 

Internet:76711.212@compuserve.com or 

Compuserve:76711,212 


Copyright ©1994 Kogan Associates, Inc. 



OS04 


History Of RISC 


Platform Wars 


Kogan Associates, Snc, 

Computer Consulting & Education Services 


Execution Time = Instructions K 


Clocks 

Instruction 


* 


Time 

Clock 


Copyright ©1994 Kogan Associates, Inc. 


History Of RISC 


RISC Compilers 


« Complexity in Instruction Sets Limited Performance 
Of Processors 

a Compilers Rarely Used Complex Instructions 
- Instruction Decode And Complexity Moved From 
Runtime Hardware To Compile-time Software 
a Closes The "Semantic Gap" Between Compiler And 
instruction Set 

* Resulting Architecture = Reduced Instruction Set 
Computer 


H Are Part Of The Chip Conceptually 

■ Are More Processor-specific Than Ever 

n Must Generate Processor-Specific Code For Best 
Performance 

d Perform instruction Decoding, Selection, And 
Scheduling 

■ Must Reduce Idle Cycles And Stalls 
® Loop Unrolling, Software Pipelining 


Copyright © 1994 Kogan Associates, Inc. 


Copyright © 1994 Kogan Associates, Inc. 



In Each Generation... 


b More Sophisticated Software Technology 

■ increases Demand For Memory Bandwidth 

■ Evolving Manufacturing Technology 

- Smaller Circuits 

- Faster Clock Rates 



RISC Evolution 


■ 1st Generation 

- Simplification Of instruction Set And Hardware 
a 2nd Generation 

- Pipelined Microprocessors 

- Single Cycle instruction Execution 

■ 3rd Generation 

- Superscalar Microprocessors 

- Exploit Instruction-Level Parallelism 

- Multiple Instructions Per Cycle Execution 
b 4th Generation 

- Very Long Instruction Word 

Copyright ©1994 Kogan Associates, Inc. 


3-Stage Pipeline Execution Model 


Cycle 1 Cycle 2 Cycle 3 Cycle 4 Cycle 5 Cycle 6 

Instruction 1 

instruction 2 
Instruction 3 

Instruction 4 


Copyright ©1994 Kogan Associates, Inc. 








Degree-2 Superscalar Execution Model 

Cycle 1 Cycle 2 Cycle 3 Cycle 4 Cycle 5 Cycle 6 

Instruction 1 
Instruction 2 
Instruction 3 
Instruction 4 
Instruction 5 
Instruction 6 
Instruction 7 
Instruction 8 


x86 vs. RISC 


■ Architectures 

■ Performance 
• Market 

■ Cost 

■ x86 Compatibility 

■ Software 



Copyright @1994 Kogan Associates, Inc. 


RISC Solutions 


■ Traditionally Packaged As Workstations 

- RISC Processor 

- 16+MB HAM 

- 500+MB DASD 

h Attractive For Large Applications That Are Not 
Feasible On 16-Bit Desktop Systems 

- Engineering And Scientific Sectors 

- Early Downsizing Of Mlni/Mainframe Programs 

■ Also Used As Controllers In Embedded Systems 

Copyright @1994 Kogan Associates, Inc. 


Intel Pentium (P54C) Microprocessor 


« 5th Generation CPU, Successor To 80486 

■ 3.3M Transistors 

s 3,3V, 10W @ 100MHz 

■ ,6 Micron BICMOS Fabrication 
- Full x86 Compatibility 


Copyright @1994 Kogan Associates, Inc. 







Intel Pentium (P54C) Microprocessor 


■ Multiprocessor Enabled 

® integrated Advanced Programmable interrupt Ctrl 
(APIC) 

H Degree-2 Superscalar 
« issue 2 ints, Execute 2 lots, Ifp 
a Pipelined Floating Point 

■ Dynamic Branch Prediction 

® Separate 8KB Instruction And Data Caches 
« Virtual 8086 Mode And Paging Enhancements 
® Provides Workstation Power On Desktop Platforms At 
Desktop Price 

Copyright © 1994 Kogan Associates, Inc. 


PowerPC 603 


a 1.6M Transistors 
« 3.3V 5 3W @80 MHz 
a o65 Micron CMOS Fabrication 
® Separate 8KB instruction And Data Caches 
■ Separate Load/Store Unit 
a Register Renaming 


Copyright © 1994 Kogan Associates, Inc. 


PowerPC 601 


« 2.8M Transistors 
. 3.6V, 10W @ 80MHz 
« J Micron CMOS Fabrication 
a Multiprocessor Enabled 
a Degree-3 Superscalar 
a Issue 2lnts+lFp s Execute lint+IFp 
« Static Branch Prediction 
« Single 32KB Cache 


Copyright © 1994 Kogan Associates, Inc. 


PowerPC 604 

« 3.6M Transistors 

H 3„3V, 13W@100MHz 

■ =65 Micron CMOS Fabrication 

a Degree-4 Superscalar 

® Issue 2ints+1Fp+1 Mem 

E Speculative Execution 

a Out Of Order Execution 

a Register Renaming 

= Dynamic Branch Prediction 

a Separate 16KB Instruction And Data Caches 

* Samples 4Q94 5 Volumes 1Q95 

Copyright ©1994 Kogan Associates, Inc. 



Performance 


» Speed 

- RISC Instruction Set Promotes Optimal Pipelining 
And Superscalar Exploitation 

- RISC is Superior Method Of Encoding Programs 
With Current Microprocessor Technology 

B Size 

- RISC Has Higher RAM And OASO Requirements 

- RISC Has More instructions, Larger Code 

- RISC Alignment And Scale Produce Larger Data 

- Software Portability Requirements Makes For 
Larger, Costlier Systems 

Copyright © 1994 Kogan Associates, Inc. 


Pentium/PowerPC Projected Performance 



Copyright © 1994 Kogan Associates, Inc. 


Performance Benchmarks 


Most Benchmarks 

- Are Not Accurate Performance Indicators 

- Only Simulate/Approximate Real Programs 
Must Compare Equal Environments With Same 
Application Set 

Compilers Can Perform Unnatural Optimizations On 
Benchmarks 


Copyright ©1994 Kogan Associates, Inc. 


x86 Futures 


Pentium Microprocessor Successors 

- Beyond 100MHz (150, 200) 

- =4 Micron Fabrication 

- Larger On-chip Caches 
x8S Compatibles 

- AMD K5 

- Cyrix Ml 

- NexGen Nx586 

- IBM 


Copyright © 1994 Kogan Associates, Inc. 



Intel P6 


Intel/HP 


x86 Compatible 

-6M Transistors @ A Micron Fabrication 
-300 Intel MIPs, 200+ !Spec92 
Expected 4095 
Speculation 

- Simultaneous issue Of Int And Fp instructions 

- 64-Bit Linear Addressing 

- Larger On-Chip Caches 

- Higher Clock Rates 

- Speculative Execution 

- Out Of Order Execution 

- Register Renaming 

Copyright © 1994 Kogan Associates, Inc. 


1998 Timeframe 

Intel P7 + HP PA RISC + VLIW = P86 
x86 Compatible 

Enables Exploitation Of Native instruction Set 
Performance Potential Beyond RISC 


Copyright ©1994 Kogan Associates, Inc. 


PowerPC Futures 

601 + 

“ .5 Micron Fabrication 

- 2.5V, 4W@100MHz 

- Expected 4Q94 (601+) 

615 

- On-chip 486 emulation support 

- Expected 2H95 
620 

- High-End Offering 

- >200 ISpec92 

- 64-Bit implementation Of PowerPC Architecture 

- Expected 2Q95 


Market Dynamics 


What Users Want 

What Business Users Want 

What Software Developers (ISVs) Want 

What Hardware Developers (OEMs) Want 

Decisions Made By Each Group influenced By 

- Cost 

- Value 

- Quality 

- Performance 

- Availability 


Copyright © 1994 Kogan Associates, Inc. 


Copyright © 1994 Kogan Associates, Inc.. 



Market Growth 


Cost Issues 


Projected Unit Sales Of PCs And Workstations 


Million* 
00 — 



1902 1 003 1 004 

* Indudo* BOOK PowerPC M»oirto«h Sy*l«m* 


Copyright © 1994 Kogan Associates, Inc. 


x86 Has Lower Cost Since Development Cost is 
Amortized Over Large Volumes 
RISC Has Higher Cost Since Development Cost Is 
Amortized Over Significantly Lower Volumes 
x86-Based PCs Have Better Price/Performance 
Small x86-Based System Margins Favor x86 


Copyright ©1994 Kogan Associates, Inc. 


DOS Compatibility On RISC Windows 3.X Compatibility On RISC 


Largest Installed Software Base 
Compatibility Options 

- x8© Real Mode Emulators 

► Emulate Complete x8© Real Mode PC 
» Compatibility Acceptable 

► Performance Penalty For Emulation 

► insignia SoftPC 

- 386/48© Coprocessor 

► Offloads DOS Programs From Main RISC CPU 

► Native x8© Performance And Compatibility 

- On-chip x86 Emulation 


2nd Largest, Fastest Growing Installed Base 
Windows 3.X Emulators/Binary Translators 

- Maps Windows Calls into Native Environment 
> Windows NT Maps To Win32 

- UNIX Offerings Map To XServer 

- Limited Compatibility 

- No Device Driver Support 

- Large Performance Penalty 

- 1©MB RAM Requirement 

- Insignia SoftWin, WABS 

Not As Compatible As Emulating True x8© Protected 
Mod© Environment Or 386/486 Coprocessor Option 


Copyright © 1994 Kogan Associates, Inc. 


Copyright © 1994 Kogan Associates, Inc. 




Software 


Cross-Platform Operating System Issues 


x86 

~ Availability 

- Large installed Applications Base 

- Cost Of Software Amortized Over Large Market 

- Large Selection Of Software Tools 
RISC 

- Smaller installed Applications Base 

- Higher Software Costs/Margins 

- Software Distribution Problems Because Of 
Proliferation Of Native instruction Sets 


No Viable, Competitive Systems Ready Yet 
Portable OS Hardware Requirements High 
Different Binary Formats impacts Distribution, 
Support, And Availability 
Migration And Compatibility Critical 
Volumes And Hearts Of ISVs Will Play Key Role In 
Market Evolution 


Copyright © 1994 Kogan Associates, Inc. 


Copyright © 1994 Kogan Associates, Inc. 


AppSe Platform 

■ Migration From Motorola 680X0 to PowerPC 

■ Client Or Server 

■ Proprietary Operating System 

■ Mozart (System 7,5,1994) 

- PowerPC, 680X0 

- System Uses Some Emulation On PowerPC 

■ Copland (1995) 

- PowerPC, 680x0 

- Native PowerPC OS 

- Preemptive Multitasking, Memory Protection 

■ Gershwin (System 8,1996) 

- PowerPC 

- AppSe Microkernel 


Windows Platform 


= Windows 3„X 

- x86 Low-end 

■ Chicago (1995) 

- x86 Client 
= Windows NT 

- x86, MIPS, Alpha, PowerPC, SPARC, HP-PA 

- RISC-based PC Or Workstation 

- Client Or Server 

■ Cairo (1995-96) 


Copyright ©1994 Kogan Associates, Inc. 


Copyright ©1994 Kogan Associates, Inc. 



OS/2 PSatform 


. OS/2 2.X 

- x86-Sp@clfic 

- Uniprocessor And Multiprocessor 

- Mission-critical Client Or Server 

■ Power OS/2 (1995) 

- PowerPC, x86 

- Uses Mach-based IBM Microkernel 

- RISC-based PC Or Workstation 

- Client Or Server 

■ Taligent (1995-96) 

Copyright ©1994 Kogan Associates, Inc. 


x86 vs. RISC Projections 

« RISC Will Lead In High-End Performance 
« x86 PCs w/32-Bit Operating Systems Are Grabbing 
Share Of Workstation Market 

- Continue To Dominate PC Market 

- Push into Low And Mid-Range Portions Of 
Workstation Market 

* 1394 Will See Pentium Microprocessor Growth Easily 
Accelerate Beyond Total RISC Market 
= Pentium Provides Best Transition And Migration Path 
From Current 16-Bit PC Platforms To 32-Bit 
Workstations And Beyond 


Copyright ©1994 Kogan Associates, Inc. 


UNIX Platform 


* SunSoft SoSaris^Nextstep (SPARC, x86, PowerPC) 

* Unsvell (x86, PowerPC) 

» IBM AlX/Personal AIX (PowerPC) 

* COSE-OSF Alliance Compliance 
« Vendor-specific Offerings 


Copyright © 1994 Kogan Associates, Inc. 


Platform Projections 

» PowerPC Best Chance For Mainstream RISC 

- Apple 

- R S/6000 

- Embedded Systems 

■ RISC PC Market Slow To Move Until 1996 Earliest 

- xB6 Competitors Fuel x86 Market Growth 

- Chicago, OS/2, OS/2 BMP Give x86 More Life 

- DOS/Windows Compatibility Lags On RISC 

- ISVs Will Develop 32-Bit x86 Versions Of Software 
First Due To Volumes And Tools 

- Reluctance Of Apple To License System 7 

- Windows NT And Workplace OS Not Ready For 
Prime Time On RISC 


Copyright ©1994 Kogan Associates, Inc. 



The Design Of OS/2, 2nd Edition 


Highlights 

- Updated to cover OS/2 2.1, 2=2, OS/2 for Windows, 
OS/2 for SMP, Workpiece OS, OS/2 for PowerPC 

- New chapters on Multimedia, Multiprocessors, and 
Microkernels 

- Expanded coverage of latest microprocessor 
technologies (Pentium, PowerPC, Alpha) and 
system architectures 

Ordering Info email lnternet:os2@aw.com 
1st edition comments and suggestions email 
!nt@rnet:70711 =212@compuserve 0 com or 
Compus@rv@:76711,212 


Copyright © 1994 Kogan Associates, hie. 


OS05 


OS/2 Windows Support, 
Inside and Out ( OS05) 


Ron Cadima & Allan Wynn 
IBM Boca Raton 


High Level Design 

► Each Separate WIN-OS/2 Session runs in a 
protected Virtual DOS Machine. 

WIN-OS/2 display drivers write directly to the 
video adapter hardware. 

► Main Seamless design issues are serializing 
and coordinating hardware access between 

WIN-OS2 and PM display drivers. 

► Other components of OS/2 modified to support 
this (and other) operations. 


Disclaimers 


All information contained within this presentation is 
based on tests performed in the IBM Boca Raton 
Development Center, and is relative to the specific 
levels of operating system code and hardware 
configurations used. Results will vary based on 
different hardware platforms, system setup, disk 
layouts, and versions of software used. 

Windows 3.1 Trademark of Microsoft Corp., Redmond, 
Washington 

OS/2 2.11 Trademark of IBM Corporation. 


High Level Design 

► Shield Threads used to coordinate screen use 
between Windows and OS/2. 

- WINSHIELD, PMSHIELD 

► Mutex Semaphore used 

► PM Window Size is Windows Screen Size 


► idle Sensitivity is a function of the Virtual 
Device driver (VDD). 


- System API functions to aid VDD. 



High Level Design 


OS/2 For Windows 


Windows Application 
["ySERl^"’ r GDL 


Windows 

liiliis: 


windows 
pisplay DP 


PM Application 


m 

display DD| 


: VWIN Virtual 
'Device Driver 


liiiiiij r 

-lilllll 

1 



Graphics 
; Engine 

SHIELD 


► Runs on OS/2 2.1 Base. 

- Multithreading and Tasking 

- Multiple Separate Copies 

- Separate Virtual DOS Machines for DOS and 
Windows 3.1 Sessions, as well as full OS/2 
Support. 

- HPFS Support. 


OS/2 For Windows 

► installs ON existing DOS/Windows 3.1. 

- Now Support Windows 3.11 and Windows for 
Workgroups 

► Uses All Windows Code and Drivers. 

► Uses Windows INI and GRP Files 

► Provides greater application compatibility. 


W1NOS2 Sessions 

► Common Support 

► OLE 2.0 

► DDE ( Dynamic Date Exchange) 

► Cut and Paste 

► Multimedia Support 

► Common or Separate Sessions 


► Access to All OS/2 Resources 


















► Full Screen 

- Usually provides better performance. 

- Look and feel of Windows 3.1 

- All Support provide (Accessories, Sound, etc.) 

► Seamless 

- Runs on OS/2 Desktop 

- Sperate or Common Sessions 


__ Import WINOS2 Settings 

.► COM DIRECT ACCESS 

- Direct Access to Hardware Port 

- Used by only 1 active session 

► COM HOLD 

- Supports one session opening the port and 
another accessing it. 

► SNT DURING 10 

- Allows interrupts during I/O 

- Performed on Separate Thread 

- Use for Multimedia and Communications. 


Important Windows Settings 

► WIN RUN MODE 

- Standard 

- Enhanced 

► Always use for Floating Point 

► WINjCLIPBOARD and WIN_DDE 

- On is Public (OS/2, DOS, and W1N0S2) 

- Off is Private 

► Relative to current Session 

► Faster execution 

► Less Resources 


Important W1N0S2 Settings 

► DOS BACKGROUND EXECUTION 

- Controls whether program runs when it does 
not have foreground focus. 

- Usually provides better performance to other 
programs running in the system. 

- DO NOT use for communication applications 

► HW TIMER 

- Provides access to hardware timers 

- Use for Games, Multimedia, and other time 
sensitive programs. 





important WIN0S2 Settings 

► MOUSE EXCLUSIVE ACCESS 

- Give Program exclusive ownership of Mouse 

- Minor Performance Gain 

(. VIDEO SWITCH NOTIFICATION 

- Notifies application when switch in screen 
focus has been made. 

- Turn off for WINOS2 Sessions. 

i. VIDEO 8514 XQA IOTRAP 

- Set on for WINOS2 Sessions 

- Off for DOS applications and Games. 


Resource Requirements 

► Memory Requirements ( WINOS2) 

► No Application 

- 2.7 Megabytes 

► DOS Support 1.2 Meg 

► WSNOS2 1.5 Meg 

► AMIPRO for Windows 

- 3.7 Megabytes 

- DOS Support 1.2 Meg 

► W1NOS2 2.5 Meg 


Note - Does not include extra System Resources. 


Resource Requirements 

► Disk Space (W1NOS2) 

- Total of 9.2 Megabytes 


► DOS Support 1.36 

. WINOS2 7.78 

. Readme 0.39 

. Accessories 1.09 

. Screen Saver 0.08 

► Sound 0.27 


Disclaimer _ 

The test results presented on the following pages 
are based on test scenarios run at the IBM Boca 
Raton Development Center in Boca Raton, 

Florida. They are relative to the specific hardware 
used, the setup of that hardware, and the 
versions and setup of the software used. Results 
will vary in all other circumstances. 


_ Copyrights _ 

► Microsoft Corporation, Redmond, Wa. 

- Excel 

- WinWord 

- Windows 3.1 

► Lotus Development Corporation 

- AmiPro for Windows 

► IBM Corporation, Boca Raton, FL 

- WSN0S2 
-OS/2 


Test Results 

OS/2 2.1 W1NOS2 vs Windows 3.1 


Test Full Screen Seamless 

Excel 4.0 - 7% - 8% 

Amipro 2.0 5% - 12% 

Winword 2.0 - 2% - 5% 

WinMark 3.11 -1% =22% 


Minus means Slower 


_ Test Description 

► All Tests Run on Toshiba 4600C Portable 

► 486SLC33 VGA System, 6 Meg of Memory. 

► Excel & WinMark measures throughput 

► Amipro and Winword measure time. 

► Results base on average of 3 runs. 

► Default install settings used for Windows 3.1 
and applications. 

► Disk cache size of 512 kb for Windows 3.1 and 
128K for OS/2 


Planned WINOS2 Changes 

► Reduced memory requirements 

► Reduced code paths 

► 32 Bit Seamless interface 

► Improved Memory Management 
s. Reduced Windows Overhead 

Enhanced and Editable DOS Settings 



Other Considerations 


^ Hardware 

- Video ( VGA, SVGA, XGA, etc.) 

- Processor (Speed and Caching ) 

- Disk (Type and Access speed ) 

► Fragmentation and File Layout 

► Environment 

- Number and Type of Programs 

- Session Settings 

- System Setup 














Disclaimer 




0S/2.X Performance 
Enhancements (OS06) 


Ron Cadima & Allan Wynn 
IBM Boca Raton 


This presentation is based on OS/2 Beta Level 
code. Any features, options, and performance 
results are subject to change when this version 
of OS/2 becomes a generally available Product. 
Information will be given In the formal 
presentation that is not included in these charts. 


Performance Enhancements 

► OS/2 Program Loader / Linker 

► Compiler Update 

► 32 Bit Code 

p- Memory Reductions 
- Device Driver Support 

► Product Installation 

► Product Enhancements 


OS/2 Loader and Linker 


► New OS/2 Linker 

► Supports EXEPACK 2 

- Reduces EXE and DLL sizes up to 30% 

- Improves Program Load and Run Times 
_ Only Valid for OS/2 release built with this 

support 

- Equivalent support for packing Resources 





OS/2 Loader and Linker 


► OS/2 Loader modified lo handle new packing 
- StiSS supports old packing mechanisms 

► Loader optimizations 


Memory Reductions 

► Reduced Working Set 

- Page Tuning 

- Reorganize code based on usage 

- Code Path Reductions 

- Optimize code paths 

> Remove redundant functions. 

- Better Memory Management 

- Global and Shared memory 


Compiler Update 


Using Latest Beta Version of IBM C/SET++ 
Areas converted to 32 Bit 

- PM and SEAMLESS Support 

- Workplace Support 

Code Optimized for 486, Speed and Size 

- Little impact on 386 class machines. 

C/SET++ Provides Tools for Code Path Analysis 
and Working Set Reductions. 

- Allowed us to better tune memory page usage. 


Memory Reductions 

Reduced Working Set 
- Improved Page Swapping 

► Improved algorithm and analysis of data 

► Zeroes compression 

► Pre-Swap System DLLs 
- Based all System DLLs 







Memory Reductions 


► Intelligent Settings 

- CONFIG.SYS 

- DOS / Windows Session Settings 

- OS/2 System Settings 


CONFIG.SYS Changes 


These changes affect a system with less than 6 
Megabytes of physical memory. 


Setting 

Values 


2.11 

New 

THREADS 

256 

92 

DSSKCACHE 

128 

48 

BUFFERS 

30 

60 

SWAPFILE SIZE 

6144 

12288 

DOS 

LOW s NOUMB 



System Settings 

.. . - . 

The following System Settings have be modified 


for systems with 

less than 6 Mb of memory. 

Setting 

Values 


2.11 

New 

WINOS2 



DDE 

Public 

Private 

CLIPBOARD 

Public 

Private 

Mode 

Standard 

Enhanced 


Installation Enhancements 

► Multiple Printer installation Selection 

► Enhanced CD-ROM Support 

- Easier OEM Installation 

► Enhanced Video Support 

- More Adapters 

► 6 Diskettes of video drivers 

- Easier for OEMS to Add to List 

► Multimedia Included In Base System 

- Diskette and CD-ROM 






Installation Enhancements 

► Consistent Configuration Screens and Interface 

- 3D Pushbuttons 

- Basic Video Install 

- Basic System install on 1st 7 Diskettes 

► Improved CONFIG.SYS and AUTOEXEC.BAT 
editing. 

► Multiple Partition Format with Response Install. 


Product Enhancements 

► SOM2 and DSOM Support Integrated 

- Allows Internet operability 

► Dynamic LIBPATH by Process 

► System Archiving Support 

► Front Panel Driver 

- SingaS Mouse Click to launch applications. 

► Enhanced and Improved Tutorial 

► Improved System Icons 


DOS / Windows Support 


► improved Settings Handling 

- Logical Groupings 

- Editable File Support 

► DOS Subclass Priorities 

► Reduce Number of True Type Fonts Loaded 

► Reduced Memory Usage 

► Reduced Code Paths 

► Reduce Windows Overhead 


Disk Requirements 



2.11 

install 

42 meg. 

Preselected Install 

29 meg. 

Minimum Install 

11 meg.